Install update-system script
This commit is contained in:
parent
63c086197c
commit
5cc42dac77
|
@ -9,37 +9,16 @@
|
|||
modeFile = "${config.home.homeDirectory}/.mode";
|
||||
modeDir = "${config.home.homeDirectory}/.volatile/modes";
|
||||
configPath = "${config.home.homeDirectory}/git/config";
|
||||
configGit = "${pkgs.git}/bin/git -C ${configPath}";
|
||||
configGit = "${lib.getExe pkgs.git} -C ${configPath}";
|
||||
in {
|
||||
home.packages = builtins.attrValues rec {
|
||||
updateSystem = pkgs.writeShellScriptBin "update-system" ''
|
||||
remote_host=$1
|
||||
host=''${remote_host:-${hostName}}
|
||||
|
||||
echo "Building configuration for $host …"
|
||||
output=$(nom build --builders @$(builders-configurator) ~/git/config#nixosConfigurations.$host.config.system.build.toplevel --no-link --print-out-paths)
|
||||
|
||||
if [[ -z "$remote_host" ]]; then
|
||||
on_target() {
|
||||
/run/wrappers/bin/sudo $@
|
||||
}
|
||||
else
|
||||
on_target() {
|
||||
${lib.getExe pkgs.openssh} root@$host $@
|
||||
}
|
||||
echo "Uploading configuration to $host …"
|
||||
${lib.getExe pkgs.nix} copy $output --to ssh://$host
|
||||
fi
|
||||
on_target ${pkgs.nix}/bin/nix-env -p /nix/var/nix/profiles/system --set $output
|
||||
on_target $output/bin/switch-to-configuration switch
|
||||
'';
|
||||
maintenance = pkgs.writeShellScriptBin "maintenance" ''
|
||||
set -e
|
||||
${configGit} pull --ff-only
|
||||
echo "Running update-modes …"
|
||||
${lib.getExe updateModes}
|
||||
echo "Updating system …"
|
||||
${lib.getExe updateSystem}
|
||||
${lib.getExe pkgs.updateSystem}
|
||||
echo "Maintenance finished."
|
||||
'';
|
||||
activateMode = pkgs.writeHaskellScript {name = "activate-mode";} ''
|
||||
|
@ -63,7 +42,7 @@ in {
|
|||
main = do
|
||||
say "Building ~/.modes for ${hostName}"
|
||||
builders <- builders_configurator |> captureTrim
|
||||
nom ["build", "--builders", [i|@#{builders}|], "/home/maralorn/git/config#homeModes.${hostName}", "-o", "${modeDir}"]
|
||||
nom ["build", "--builders", [i|@#{builders}|], "${configPath}#homeModes.${hostName}", "-o", "${modeDir}"]
|
||||
activate_mode
|
||||
'';
|
||||
quickUpdateMode =
|
||||
|
@ -79,7 +58,7 @@ in {
|
|||
mode <- getMode
|
||||
say [i|Quick switching to mode #{mode} ...|]
|
||||
builders <- builders_configurator |> captureTrim
|
||||
path :: Text <- decodeUtf8 <$> (nom ["build", "--builders", [i|@#{builders}|], "--print-out-paths", "--no-link", [i|/home/maralorn/git/config\#homeConfigurations.${hostName}-#{mode}.activationPackage|]] |> captureTrim)
|
||||
path :: Text <- decodeUtf8 <$> (nom ["build", "--builders", [i|@#{builders}|], "--print-out-paths", "--no-link", [i|${configPath}\#homeConfigurations.${hostName}-#{mode}.activationPackage|]] |> captureTrim)
|
||||
exe ([i|#{path}/activate|] :: String)
|
||||
update_modes
|
||||
'';
|
||||
|
|
|
@ -28,9 +28,12 @@
|
|||
# permitRootLogin = "prohibit-password"; Default
|
||||
};
|
||||
|
||||
environment.etc."nix/machines".source = toString (pkgs.runCommand "nix-machines" {} ''
|
||||
environment = {
|
||||
systemPackages = [pkgs.updateSystem];
|
||||
etc."nix/machines".source = toString (pkgs.runCommand "nix-machines" {} ''
|
||||
cp $(${pkgs.builders-configurator}/bin/builders-configurator ${config.networking.hostName} --without-connection) $out
|
||||
'');
|
||||
};
|
||||
|
||||
nix = {
|
||||
distributedBuilds = lib.mkDefault true;
|
||||
|
|
22
overlays/update-system.nix
Normal file
22
overlays/update-system.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
final: _: {
|
||||
updateSystem = final.writeShellScriptBin "update-system" ''
|
||||
set -e
|
||||
remote_host=$1
|
||||
host=''${remote_host:-$(hostName)}
|
||||
echo "Building configuration for $host …"
|
||||
output=$(nom build --builders @$(builders-configurator) /home/maralorn/git/config#nixosConfigurations.$host.config.system.build.toplevel --no-link --print-out-paths)
|
||||
if [[ -z "$remote_host" ]]; then
|
||||
on_target() {
|
||||
/run/wrappers/bin/sudo $@
|
||||
}
|
||||
else
|
||||
on_target() {
|
||||
${final.lib.getExe final.openssh} root@$host $@
|
||||
}
|
||||
echo "Uploading configuration to $host …"
|
||||
${final.lib.getExe final.nix} copy $output --to ssh://$host
|
||||
fi
|
||||
on_target ${final.nix}/bin/nix-env -p /nix/var/nix/profiles/system --set $output
|
||||
on_target $output/bin/switch-to-configuration switch
|
||||
'';
|
||||
}
|
Loading…
Reference in a new issue