2020-12-31 02:12:29 +01:00
|
|
|
{ dir
|
|
|
|
, pkgs ? import <channels-nixos-stable> {}
|
2018-11-19 02:04:26 +01:00
|
|
|
, ownLib ? import ../lib/default.nix { }
|
|
|
|
, gitRoot ? "$(git rev-parse --show-toplevel)"
|
2020-12-31 02:12:29 +01:00
|
|
|
|
|
|
|
# FIXME: why do these need explicit mentioning?
|
|
|
|
, moreargs ? null
|
|
|
|
, rebuildarg ? ""
|
|
|
|
, ...
|
|
|
|
} @ args :
|
2018-11-19 02:04:26 +01:00
|
|
|
|
2018-12-16 21:57:20 +01:00
|
|
|
let
|
|
|
|
rebuildargsSudo = [ "switch" "boot" ];
|
2020-12-31 02:12:29 +01:00
|
|
|
rebuild = {
|
|
|
|
rebuildarg
|
|
|
|
, gitRoot
|
|
|
|
, moreargs ? null
|
|
|
|
|
|
|
|
, ...
|
|
|
|
}: pkgs.writeScript "script" ''
|
2018-11-19 02:04:26 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -xe
|
|
|
|
|
|
|
|
pushd ${gitRoot}/${dir}
|
|
|
|
export NIXOS_CONFIG="$PWD"/configuration.nix
|
|
|
|
|
|
|
|
[[ -e "''${NIXOS_CONFIG}" ]]
|
|
|
|
|
2019-01-02 12:20:23 +01:00
|
|
|
${if (builtins.elem rebuildarg rebuildargsSudo)
|
|
|
|
&& builtins.match ".*--target-host.*" moreargs == null
|
|
|
|
then
|
2018-12-16 21:57:20 +01:00
|
|
|
"sudo -E \\"
|
|
|
|
else
|
|
|
|
""
|
2019-01-02 12:20:23 +01:00
|
|
|
}
|
2018-12-17 13:14:22 +01:00
|
|
|
nixos-rebuild --show-trace -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} ${moreargs}
|
2018-11-19 02:04:26 +01:00
|
|
|
if test -L result; then
|
|
|
|
rm result
|
|
|
|
fi
|
|
|
|
'';
|
|
|
|
|
2018-12-17 13:14:22 +01:00
|
|
|
|
2018-11-19 02:04:26 +01:00
|
|
|
in {
|
|
|
|
recipes = {
|
2020-12-31 02:12:29 +01:00
|
|
|
rebuild = rebuild { inherit gitRoot; inherit (args) rebuildarg moreargs; };
|
|
|
|
} // (import ./disk.nix (args // { inherit pkgs ownLib gitRoot; }))
|
|
|
|
;
|
2018-11-19 02:04:26 +01:00
|
|
|
}
|