nix-configs/modules/utils.nix
2023-10-28 22:25:06 +02:00

49 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;
};
}