mirror of
https://forge.katzen.cafe/schrottkatze/nix-configs.git
synced 2024-11-05 15:16:23 +01:00
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;
|
|
};
|
|
}
|