Bumped version for nushell (release notes at https://www.nushell.sh/blog/2023-02-21-nushell_0_76.html); changed the name of the settings such that it complies with the current Cargo.toml; made it possible to apply additional cargo features such as the dataframes feature, made it possible to skip checks to avoid building and running the tests for derivations that modify the cargo features
82 lines
1.9 KiB
Nix
82 lines
1.9 KiB
Nix
{ stdenv
|
|
, lib
|
|
, fetchFromGitHub
|
|
, fetchpatch
|
|
, runCommand
|
|
, rustPlatform
|
|
, openssl
|
|
, zlib
|
|
, zstd
|
|
, pkg-config
|
|
, python3
|
|
, xorg
|
|
, libiconv
|
|
, Libsystem
|
|
, AppKit
|
|
, Security
|
|
, nghttp2
|
|
, libgit2
|
|
, doCheck ? true
|
|
, withDefaultFeatures ? true
|
|
, additionalFeatures ? (p: p)
|
|
, testers
|
|
, nushell
|
|
, nix-update-script
|
|
}:
|
|
|
|
rustPlatform.buildRustPackage (
|
|
let
|
|
version = "0.76.0";
|
|
pname = "nushell";
|
|
in {
|
|
inherit version pname;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = pname;
|
|
repo = pname;
|
|
rev = version;
|
|
sha256 = "sha256-dGsnbKsg0nQFFXZDRDei2uGhGWEQSeSHGpXJp+8QUC8=";
|
|
};
|
|
|
|
cargoSha256 = "sha256-9oXMojQA4tSoIxY1lwMPGhQz3WHcxEKtwl+4LsAYbDo=";
|
|
|
|
nativeBuildInputs = [ pkg-config ]
|
|
++ lib.optionals (withDefaultFeatures && stdenv.isLinux) [ python3 ]
|
|
++ lib.optionals stdenv.isDarwin [ rustPlatform.bindgenHook ];
|
|
|
|
buildInputs = [ openssl zstd ]
|
|
++ lib.optionals stdenv.isDarwin [ zlib libiconv Libsystem Security ]
|
|
++ lib.optionals (withDefaultFeatures && stdenv.isLinux) [ xorg.libX11 ]
|
|
++ lib.optionals (withDefaultFeatures && stdenv.isDarwin) [ AppKit nghttp2 libgit2 ];
|
|
|
|
buildFeatures = additionalFeatures [ (lib.optional withDefaultFeatures "default") ];
|
|
|
|
# TODO investigate why tests are broken on darwin
|
|
# failures show that tests try to write to paths
|
|
# outside of TMPDIR
|
|
doCheck = doCheck && !stdenv.isDarwin;
|
|
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
echo "Running cargo test"
|
|
HOME=$TMPDIR cargo test
|
|
runHook postCheck
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "A modern shell written in Rust";
|
|
homepage = "https://www.nushell.sh/";
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ Br1ght0ne johntitor marsam ];
|
|
mainProgram = "nu";
|
|
};
|
|
|
|
passthru = {
|
|
shellPath = "/bin/nu";
|
|
tests.version = testers.testVersion {
|
|
package = nushell;
|
|
};
|
|
updateScript = nix-update-script { };
|
|
};
|
|
})
|