From fe1af48c0d074a52b69e978ff518a32302a21fa9 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 25 Jul 2024 14:33:47 -0400 Subject: [PATCH] Dimaga: add weekly task to build derivations for other hosts --- flake.lock | 18 +++++------ hosts/Dimaga/default.nix | 24 +++++++++++++++ modules/services/autoupgrade.nix | 18 ++--------- modules/system/system.nix | 51 +++++++++++++++++++------------- 4 files changed, 66 insertions(+), 45 deletions(-) diff --git a/flake.lock b/flake.lock index 8bfae67..fb3a89a 100644 --- a/flake.lock +++ b/flake.lock @@ -138,11 +138,11 @@ ] }, "locked": { - "lastModified": 1721804110, - "narHash": "sha256-i4jINRazBKPqlaS+qhlP+kV/UHEq3vs5itfpblqu4ZM=", + "lastModified": 1721852138, + "narHash": "sha256-JH8N5uoqoVA6erV4O40VtKKHsnfmhvMGbxMNDLtim5o=", "owner": "nix-community", "repo": "home-manager", - "rev": "af70fc502a15d7e1e4c5a4c4fc8e06c2ec561e0c", + "rev": "304a011325b7ac7b8c9950333cd215a7aa146b0e", "type": "github" }, "original": { @@ -248,11 +248,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1721839713, - "narHash": "sha256-apTv16L9h5ONS2VTPbKEgwAOVmWGku0MsfprjgwBFHo=", + "lastModified": 1721911538, + "narHash": "sha256-5OrkPJsiZmNe99C6+KX0qx9sphoVLvldFjuqDYAZ8GQ=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "a7432ebaefc9a400dcda399d48b949230378d784", + "rev": "d3c993c851ad40bbab7e08d566138ff72cd8744f", "type": "github" }, "original": { @@ -296,11 +296,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1721562059, - "narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=", + "lastModified": 1721743106, + "narHash": "sha256-adRZhFpBTnHiK3XIELA3IBaApz70HwCYfv7xNrHjebA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe", + "rev": "dc14ed91132ee3a26255d01d8fd0c1f5bff27b2f", "type": "github" }, "original": { diff --git a/hosts/Dimaga/default.nix b/hosts/Dimaga/default.nix index 1b56c10..515f1c0 100644 --- a/hosts/Dimaga/default.nix +++ b/hosts/Dimaga/default.nix @@ -50,6 +50,30 @@ in hybrid-sleep.enable = false; }; + # Build Nix packages for other hosts. + # Runs every Saturday at 4 AM + systemd.services."build-hosts" = { + serviceConfig = { + Type = "oneshot"; + User = "root"; + }; + path = config.aux.system.corePackages; + script = '' + cd ${config.secrets.nixConfigFolder} + nh os build --hostname Khanda + ''; + }; + systemd.timers."build-hosts" = { + wants = [ "network-online.target" ]; + after = [ "network-online.target" ]; + wantedBy = [ "timers.target" ]; + timerConfig = { + OnCalendar = "Sat 04:00"; + Persistent = true; + Unit = "build-hosts.service"; + }; + }; + # Configure the system. aux.system = { # Enable to allow unfree (e.g. closed source) packages. diff --git a/modules/services/autoupgrade.nix b/modules/services/autoupgrade.nix index a471b28..7776b5e 100644 --- a/modules/services/autoupgrade.nix +++ b/modules/services/autoupgrade.nix @@ -8,20 +8,6 @@ let cfg = config.aux.system.services.autoUpgrade; - - # List of packages to include in each service's $PATH - pathPkgs = with pkgs; [ - # Courtesy of https://discourse.nixos.org/t/how-to-use-other-packages-binary-in-systemd-service-configuration/14363 - coreutils - git - gnutar - gzip - config.nix.package.out - nh - config.programs.ssh.package - sudo - xz.bin - ]; in { options = { @@ -76,7 +62,7 @@ in Type = "oneshot"; User = "root"; }; - path = pathPkgs; + path = config.aux.system.corePackages; # Git diffing strategy courtesy of https://stackoverflow.com/a/40255467 script = '' cd ${cfg.configDir} @@ -112,7 +98,7 @@ in Type = "oneshot"; User = cfg.user; }; - path = pathPkgs; + path = config.aux.system.corePackages; script = '' set -eu cd ${cfg.configDir} diff --git a/modules/system/system.nix b/modules/system/system.nix index c3ec7c6..7bb1af6 100644 --- a/modules/system/system.nix +++ b/modules/system/system.nix @@ -10,29 +10,40 @@ let in { options = { - aux.system.packages = lib.mkOption { - description = "Additional system packages to install. This is just a wrapper for environment.systemPackages."; - type = lib.types.listOf lib.types.package; - default = [ ]; - example = lib.literalExpression "[ pkgs.firefox pkgs.thunderbird ]"; + aux.system = { + packages = lib.mkOption { + description = "Additional system packages to install. This is just a wrapper for environment.systemPackages."; + type = lib.types.listOf lib.types.package; + default = [ ]; + example = lib.literalExpression "[ pkgs.firefox pkgs.thunderbird ]"; + }; + + corePackages = lib.mkOption { + description = "Minimum set of packages to install."; + type = lib.types.listOf lib.types.package; + default = with pkgs; [ + # Courtesy of https://discourse.nixos.org/t/how-to-use-other-packages-binary-in-systemd-service-configuration/14363 + bash + coreutils + dconf + direnv + git + gnutar + gzip + home-manager + lm_sensors + config.nix.package.out + nh + config.programs.ssh.package + sudo + xz.bin + ]; + }; }; }; config = { - # Set up the environment - environment = { - # Install base packages - systemPackages = - config.aux.system.packages - ++ (with pkgs; [ - bash - dconf # Needed to fix an issue with Home-manager. See https://github.com/nix-community/home-manager/issues/3113 - direnv - git - home-manager - lm_sensors - p7zip - ]); - }; + # Install base packages + environment.systemPackages = cfg.corePackages ++ cfg.packages; services = { # Enable fwupd (firmware updater)