{ lib , stdenv , rustPlatform , fetchFromGitHub , pkg-config , libgit2 , openssl , installShellFiles , darwin , testers , pixi }: rustPlatform.buildRustPackage rec { pname = "pixi"; version = "0.20.0"; src = fetchFromGitHub { owner = "prefix-dev"; repo = "pixi"; rev = "v${version}"; hash = "sha256-7ah5u3E9nodo/0YSuaswRY07zz8EQgvttbVKjw/USCc="; }; cargoLock = { lockFile = ./Cargo.lock; outputHashes = { "async_zip-0.0.17" = "sha256-Q5fMDJrQtob54CTII3+SXHeozy5S5s3iLOzntevdGOs="; "cache-key-0.0.1" = "sha256-qGFjI/LNf2p11BOgacYHU0hoXvCEjjnyAcAAIcD7YTo="; "pubgrub-0.2.1" = "sha256-sqC7R2mtqymYFULDW0wSbM/MKCZc8rP7Yy/gaQpjYEI="; }; }; nativeBuildInputs = [ pkg-config installShellFiles ]; buildInputs = [ libgit2 openssl ] ++ lib.optionals stdenv.isDarwin ( with darwin.apple_sdk_11_0.frameworks; [ CoreFoundation IOKit SystemConfiguration Security ] ); env = { LIBGIT2_NO_VENDOR = 1; OPENSSL_NO_VENDOR = 1; }; # There are some CI failures with Rattler. Tests on Aarch64 has been skipped. # See https://github.com/prefix-dev/pixi/pull/241. doCheck = !stdenv.isAarch64; preCheck = '' export HOME="$(mktemp -d)" ''; checkFlags = [ # Skip tests requiring network "--skip=add_channel" "--skip=add_functionality" "--skip=add_functionality_os" "--skip=add_functionality_union" "--skip=add_pypi_functionality" "--skip=test_alias" "--skip=test_cwd" "--skip=test_compressed_mapping_catch_missing_package" "--skip=test_incremental_lock_file" "--skip=test_purl_are_added_for_pypi" "--skip=test_task_with_env" # `/usr/bin/env` required ]; postInstall = '' installShellCompletion --cmd pixi \ --bash <($out/bin/pixi completion --shell bash) \ --fish <($out/bin/pixi completion --shell fish) \ --zsh <($out/bin/pixi completion --shell zsh) ''; passthru.tests.version = testers.testVersion { package = pixi; }; meta = with lib; { description = "Package management made easy"; homepage = "https://pixi.sh/"; license = licenses.bsd3; maintainers = with lib.maintainers; [ aaronjheng edmundmiller ]; mainProgram = "pixi"; }; }