1
0
Fork 0

Install update-system script

This commit is contained in:
Malte 2023-03-06 19:04:45 +01:00
parent 63c086197c
commit 5cc42dac77
3 changed files with 32 additions and 28 deletions

View file

@ -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
'';

View file

@ -28,9 +28,12 @@
# permitRootLogin = "prohibit-password"; Default
};
environment.etc."nix/machines".source = toString (pkgs.runCommand "nix-machines" {} ''
cp $(${pkgs.builders-configurator}/bin/builders-configurator ${config.networking.hostName} --without-connection) $out
'');
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;

View 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
'';
}