nix-configs/modules/utils.nix

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