infra/nix/os/devices/default.nix

55 lines
1.3 KiB
Nix
Raw Normal View History

2023-02-07 18:24:28 +01:00
{
dir,
pkgs ? import <channels-nixos-stable> {},
ownLib ? import ../lib/default.nix {inherit (pkgs) lib;},
2023-02-07 18:24:28 +01:00
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
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; }
;
}
2023-02-07 18:24:28 +01:00
// (import ./disk.nix (args // {inherit pkgs ownLib gitRoot;}));
2018-11-19 02:04:26 +01:00
}