mirror of
https://forge.katzen.cafe/schrottkatze/nix-configs.git
synced 2024-11-28 23:48:44 +01:00
57 lines
1.3 KiB
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;
|
|
};
|
|
}
|