diff --git a/pkgs/tools/package-management/ciel/default.nix b/pkgs/tools/package-management/ciel/default.nix new file mode 100644 index 000000000000..0fe289011640 --- /dev/null +++ b/pkgs/tools/package-management/ciel/default.nix @@ -0,0 +1,66 @@ +{ lib +, bash +, dbus +, fetchFromGitHub +, fetchpatch +, installShellFiles +, libgit2 +, libssh2 +, openssl +, pkg-config +, rustPlatform +, systemd +, xz +, zlib +}: + +rustPlatform.buildRustPackage rec { + pname = "ciel"; + version = "3.1.4"; + + src = fetchFromGitHub { + owner = "AOSC-Dev"; + repo = "ciel-rs"; + rev = "refs/tags/v${version}"; + hash = "sha256-b8oTVtDcxrV41OtfuthIxjbgZTANCfYHQLRJnnEc93c="; + }; + + cargoHash = "sha256-11/Yf1hTKYRsQKzvwYXgyPuhIZwshwSJ8sNykUQRdoo="; + + nativeBuildInputs = [ pkg-config installShellFiles ]; + + # ciel has plugins which is actually bash scripts. + # Therefore, bash is required for plugins to work. + buildInputs = [ bash systemd dbus openssl libssh2 libgit2 xz zlib ]; + + patches = [ + # cli,completions: use canonicalize path to find libexec location + # FIXME: remove this patch after https://github.com/AOSC-Dev/ciel-rs/pull/16 is merged + (fetchpatch { + name = "use-canonicalize-path-to-find-libexec.patch"; + url = "https://github.com/AOSC-Dev/ciel-rs/pull/16.patch"; + sha256 = "sha256-ELK2KpOuoBS774apomUIo8q1eXYs/FX895G7eBdgOQg="; + }) + ]; + + postInstall = '' + mv -v "$out/bin/ciel-rs" "$out/bin/ciel" + + # From install-assets.sh + install -Dm555 -t "$out/libexec/ciel-plugin" plugins/* + + # Install completions + installShellCompletion --cmd ciel \ + --bash completions/ciel.bash \ + --fish completions/ciel.fish \ + --zsh completions/_ciel + ''; + + meta = with lib; { + description = "A tool for controlling AOSC OS packaging environments using multi-layer filesystems and containers."; + homepage = "https://github.com/AOSC-Dev/ciel-rs"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ yisuidenghua ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 47c69e4687c1..5a94b1a959eb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -408,6 +408,8 @@ with pkgs; chrysalis = callPackage ../applications/misc/chrysalis { }; + ciel = callPackage ../tools/package-management/ciel { }; + circt = callPackage ../development/compilers/circt { }; classicube = callPackage ../games/classicube { };