2023-02-07 18:24:28 +01:00
|
|
|
{
|
|
|
|
dir,
|
|
|
|
pkgs ? import <channels-nixos-stable> {},
|
|
|
|
ownLib ? import ../lib/default.nix {},
|
|
|
|
gitRoot ? "$(git rev-parse --show-toplevel)",
|
2022-10-31 11:04:38 +01:00
|
|
|
# FIXME: why do these need explicit mentioning?
|
2023-02-07 18:24:28 +01:00
|
|
|
moreargs ? "",
|
|
|
|
rebuildarg ? "",
|
|
|
|
...
|
|
|
|
} @ args: let
|
|
|
|
rebuildargsSudo = ["switch" "boot"];
|
|
|
|
rebuild = {
|
|
|
|
gitRoot,
|
|
|
|
rebuildarg ? "dry-activate",
|
|
|
|
moreargs ? "",
|
|
|
|
...
|
|
|
|
}:
|
2022-10-31 11:04:38 +01:00
|
|
|
pkgs.writeScript "script" ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -xe
|
2018-11-19 02:04:26 +01:00
|
|
|
|
2022-10-31 11:04:38 +01:00
|
|
|
pushd ${gitRoot}/${dir}
|
|
|
|
export NIXOS_CONFIG="$PWD"/configuration.nix
|
2018-11-19 02:04:26 +01:00
|
|
|
|
2022-10-31 11:04:38 +01:00
|
|
|
[[ -e "''${NIXOS_CONFIG}" ]]
|
2018-11-19 02:04:26 +01:00
|
|
|
|
2022-10-31 11:04:38 +01:00
|
|
|
if test -L result; then
|
|
|
|
rm result
|
|
|
|
fi
|
2021-09-03 22:33:56 +02:00
|
|
|
|
2023-02-07 18:24:28 +01:00
|
|
|
${
|
|
|
|
if
|
|
|
|
(builtins.elem rebuildarg rebuildargsSudo)
|
|
|
|
&& (builtins.match ".*--target-host.*" moreargs) == null
|
|
|
|
then "sudo -E \\"
|
|
|
|
else ""
|
|
|
|
}
|
2022-10-31 11:04:38 +01:00
|
|
|
nixos-rebuild --show-trace -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} ${moreargs}
|
|
|
|
'';
|
2018-11-19 02:04:26 +01:00
|
|
|
in {
|
2023-02-07 18:24:28 +01:00
|
|
|
recipes =
|
|
|
|
{
|
|
|
|
rebuild =
|
|
|
|
rebuild {
|
|
|
|
inherit gitRoot;
|
|
|
|
inherit moreargs;
|
|
|
|
inherit rebuildarg;
|
|
|
|
}
|
|
|
|
# // pkgs.lib.attrsets.optionalAttrs (moreargs != "") { inherit moreargs; }
|
|
|
|
# // pkgs.lib.attrsets.optionalAttrs (rebuildarg != "") { inherit rebuildarg; }
|
|
|
|
;
|
2021-01-04 10:55:36 +01:00
|
|
|
}
|
2023-02-07 18:24:28 +01:00
|
|
|
// (import ./disk.nix (args // {inherit pkgs ownLib gitRoot;}));
|
2018-11-19 02:04:26 +01:00
|
|
|
}
|