50 lines
1.3 KiB
Nix
50 lines
1.3 KiB
Nix
|
{ pkgs, lib }: rec {
|
||
|
# taken from https://github.com/NixOS/nixpkgs/blob/3650808d85dccbfa3be3d785dfd3ce33a757bd2c/pkgs/build-support/trivial-builders/default.nix#L335
|
||
|
writeNuShellApplication =
|
||
|
{ name
|
||
|
, text
|
||
|
, runtimeInputs ? [ ]
|
||
|
, meta ? { }
|
||
|
, checkPhase ? null
|
||
|
}:
|
||
|
writeTextFile {
|
||
|
inherit name meta;
|
||
|
executable = true;
|
||
|
destination = "/bin/${name}";
|
||
|
allowSubstitutes = true;
|
||
|
preferLocalBuild = false;
|
||
|
text = ''
|
||
|
#!${pkgs.nushell}
|
||
|
'' + lib.optionalString (runtimeInputs != [ ]) ''
|
||
|
|
||
|
$env.PATH = ($env.PATH | split row (char esep) | prepend '${lib.makeBinPath runtimeInputs}');
|
||
|
'' + ''
|
||
|
|
||
|
${text}
|
||
|
'';
|
||
|
|
||
|
checkPhase =
|
||
|
# GHC (=> shellcheck) isn't supported on some platforms (such as risc-v)
|
||
|
# but we still want to use writeShellApplication on those platforms
|
||
|
if checkPhase == null then ''
|
||
|
runHook preCheck
|
||
|
|
||
|
nu -c "nu-check -d $target"
|
||
|
|
||
|
runHook postCheck
|
||
|
''
|
||
|
else checkPhase;
|
||
|
};
|
||
|
packageNushellApplication =
|
||
|
{ name
|
||
|
, path
|
||
|
, runtimeInputs ? [ ]
|
||
|
, meta ? { }
|
||
|
, checkPhase ? null
|
||
|
}:
|
||
|
writeNuShellApplication {
|
||
|
inherit name runtimeInputs meta checkPhase;
|
||
|
text = builtins.readFile path;
|
||
|
};
|
||
|
}
|