pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / shells / nushell / default.nix
blob0bb21e3cc85909a17345de8bc01f5d72d76693b3
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , rustPlatform
5 , openssl
6 , zlib
7 , zstd
8 , pkg-config
9 , python3
10 , xorg
11 , Libsystem
12 , AppKit
13 , Security
14 , nghttp2
15 , libgit2
16 , withDefaultFeatures ? true
17 , additionalFeatures ? (p: p)
18 , testers
19 , nushell
20 , nix-update-script
23 let
24   version = "0.99.1";
27 rustPlatform.buildRustPackage {
28   pname = "nushell";
29   inherit version;
31   src = fetchFromGitHub {
32     owner = "nushell";
33     repo = "nushell";
34     rev = "refs/tags/${version}";
35     hash = "sha256-amPQJW8ofSMh2cQQrqPNOp/p33KwPNX7fpZ4SiJGQHU=";
36   };
38   cargoHash = "sha256-AblXOeSJGqrZY5aRzdst9F+ZB++/3Adu7Kri5lDsDH8=";
40   nativeBuildInputs = [ pkg-config ]
41     ++ lib.optionals (withDefaultFeatures && stdenv.hostPlatform.isLinux) [ python3 ]
42     ++ lib.optionals stdenv.hostPlatform.isDarwin [ rustPlatform.bindgenHook ];
44   buildInputs = [ openssl zstd ]
45     ++ lib.optionals stdenv.hostPlatform.isDarwin [ zlib Libsystem Security ]
46     ++ lib.optionals (withDefaultFeatures && stdenv.hostPlatform.isLinux) [ xorg.libX11 ]
47     ++ lib.optionals (withDefaultFeatures && stdenv.hostPlatform.isDarwin) [ AppKit nghttp2 libgit2 ];
49   buildNoDefaultFeatures = !withDefaultFeatures;
50   buildFeatures = additionalFeatures [ ];
52   doCheck = ! stdenv.hostPlatform.isDarwin; # Skip checks on darwin. Failing tests since 0.96.0
54   checkPhase = ''
55     runHook preCheck
56     (
57       # The skipped tests all fail in the sandbox because in the nushell test playground,
58       # the tmp $HOME is not set, so nu falls back to looking up the passwd dir of the build
59       # user (/var/empty). The assertions however do respect the set $HOME.
60       set -x
61       HOME=$(mktemp -d) cargo test -j $NIX_BUILD_CORES --offline -- \
62         --test-threads=$NIX_BUILD_CORES \
63         --skip=repl::test_config_path::test_default_config_path \
64         --skip=repl::test_config_path::test_xdg_config_bad \
65         --skip=repl::test_config_path::test_xdg_config_empty
66     )
67     runHook postCheck
68   '';
70   passthru = {
71     shellPath = "/bin/nu";
72     tests.version = testers.testVersion {
73       package = nushell;
74     };
75     updateScript = nix-update-script { };
76   };
78   meta = with lib; {
79     description = "Modern shell written in Rust";
80     homepage = "https://www.nushell.sh/";
81     license = licenses.mit;
82     maintainers = with maintainers; [ Br1ght0ne johntitor joaquintrinanes ];
83     mainProgram = "nu";
84   };