From e2181f124aa69b5a1e74d35a2a3763c26defc527 Mon Sep 17 00:00:00 2001 From: Greg Hellings Date: Tue, 17 Feb 2026 16:10:35 -0600 Subject: [PATCH] chore: dynamic hosts, builder targets Make hosts read from directories, to limit manual changes Rename vm-gitlab -> gitlab A few reformatting and lint changes due to altered files Create builder targets for Darwin builders --- darwin/baseline.nix | 38 +++++------ garnix.yaml | 2 + home/default.nix | 2 +- hosts/default.nix | 64 +++++++++++++------ hosts/{ => unstable}/exodus/default.nix | 0 .../exodus/hardware-configuration.nix | 0 hosts/{ => unstable}/genesis/default.nix | 0 .../genesis/hardware-configuration.nix | 0 .../{ => unstable}/genesis/home-assistant.nix | 0 hosts/{ => unstable}/genesis/net/hosts | 0 hosts/{ => unstable}/genesis/networking.nix | 0 .../genesis/networking/dhcp.nix | 0 hosts/{ => unstable}/genesis/nftables.nft | 0 hosts/{ => unstable}/hosea/default.nix | 0 .../hosea/hardware-configuration.nix | 0 hosts/{ => unstable}/icdm-root/boot.nix | 0 hosts/{ => unstable}/icdm-root/default.nix | 0 hosts/{ => unstable}/icdm-root/filesystem.nix | 0 .../icdm-root/hardware-configuration.nix | 0 hosts/{ => unstable}/icdm-root/location.nix | 0 hosts/{ => unstable}/icdm-root/networking.nix | 0 hosts/{ => unstable}/icdm-root/wiki.nix | 0 hosts/{ => unstable}/isaiah/default.nix | 0 .../isaiah/hardware-configuration.nix | 0 hosts/{ => unstable}/iso/default.nix | 0 hosts/{ => unstable}/jeremiah/default.nix | 0 .../jeremiah/hardware-configuration.nix | 0 hosts/{ => unstable}/linode/default.nix | 0 hosts/{ => unstable}/linode/git.nix | 0 .../linode/hardware-configuration.nix | 0 hosts/{ => unstable}/linode/matrix.nix | 0 hosts/{ => unstable}/linode/nextcloud.nix | 0 hosts/{ => unstable}/linode/nginx.nix | 0 hosts/{ => unstable}/linode/podman.nix | 0 hosts/{ => unstable}/linode/postgres.nix | 0 .../proxmoxtemplate/default.nix | 0 .../hardware-configuration.nix | 0 hosts/{ => unstable}/zeke/boot.nix | 0 hosts/{ => unstable}/zeke/default.nix | 0 .../zeke/hardware-configuration.nix | 0 hosts/{ => unstable}/zeke/virt.nix | 0 hosts/{vm-gitlab => vm/gitlab}/default.nix | 2 +- .../gitlab}/hardware-configuration.nix | 0 network.json | 2 +- 44 files changed, 67 insertions(+), 43 deletions(-) rename hosts/{ => unstable}/exodus/default.nix (100%) rename hosts/{ => unstable}/exodus/hardware-configuration.nix (100%) rename hosts/{ => unstable}/genesis/default.nix (100%) rename hosts/{ => unstable}/genesis/hardware-configuration.nix (100%) rename hosts/{ => unstable}/genesis/home-assistant.nix (100%) rename hosts/{ => unstable}/genesis/net/hosts (100%) rename hosts/{ => unstable}/genesis/networking.nix (100%) rename hosts/{ => unstable}/genesis/networking/dhcp.nix (100%) rename hosts/{ => unstable}/genesis/nftables.nft (100%) mode change 100644 => 100755 rename hosts/{ => unstable}/hosea/default.nix (100%) rename hosts/{ => unstable}/hosea/hardware-configuration.nix (100%) rename hosts/{ => unstable}/icdm-root/boot.nix (100%) rename hosts/{ => unstable}/icdm-root/default.nix (100%) rename hosts/{ => unstable}/icdm-root/filesystem.nix (100%) rename hosts/{ => unstable}/icdm-root/hardware-configuration.nix (100%) rename hosts/{ => unstable}/icdm-root/location.nix (100%) rename hosts/{ => unstable}/icdm-root/networking.nix (100%) rename hosts/{ => unstable}/icdm-root/wiki.nix (100%) rename hosts/{ => unstable}/isaiah/default.nix (100%) rename hosts/{ => unstable}/isaiah/hardware-configuration.nix (100%) rename hosts/{ => unstable}/iso/default.nix (100%) rename hosts/{ => unstable}/jeremiah/default.nix (100%) rename hosts/{ => unstable}/jeremiah/hardware-configuration.nix (100%) rename hosts/{ => unstable}/linode/default.nix (100%) rename hosts/{ => unstable}/linode/git.nix (100%) rename hosts/{ => unstable}/linode/hardware-configuration.nix (100%) rename hosts/{ => unstable}/linode/matrix.nix (100%) rename hosts/{ => unstable}/linode/nextcloud.nix (100%) rename hosts/{ => unstable}/linode/nginx.nix (100%) rename hosts/{ => unstable}/linode/podman.nix (100%) rename hosts/{ => unstable}/linode/postgres.nix (100%) rename hosts/{ => unstable}/proxmoxtemplate/default.nix (100%) rename hosts/{ => unstable}/proxmoxtemplate/hardware-configuration.nix (100%) rename hosts/{ => unstable}/zeke/boot.nix (100%) rename hosts/{ => unstable}/zeke/default.nix (100%) rename hosts/{ => unstable}/zeke/hardware-configuration.nix (100%) rename hosts/{ => unstable}/zeke/virt.nix (100%) rename hosts/{vm-gitlab => vm/gitlab}/default.nix (99%) rename hosts/{vm-gitlab => vm/gitlab}/hardware-configuration.nix (100%) diff --git a/darwin/baseline.nix b/darwin/baseline.nix index 24e6dd7..7f9761b 100644 --- a/darwin/baseline.nix +++ b/darwin/baseline.nix @@ -1,25 +1,13 @@ { - lib, pkgs, top, ... }: let - darwin-aarch-builder = top.nixunstable.lib.nixosSystem { - system = "aarch64-linux"; - modules = [ - "${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix" - { virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; }; } - ]; - }; - darwin-x86-builder = top.nixunstable.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - "${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix" - { virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; }; } - ]; - }; -in { + #darwin-aarch-builder = top.self.nixosConfigurations.builder-aarch; + darwin-x86-builder = top.self.nixosConfigurations.builder-x86; +in +{ environment.systemPackages = with pkgs; [ hms ]; @@ -41,12 +29,18 @@ in { nix = { enable = true; - buildMachines = [{ - hostName = "ssh-ng://builder@localhost"; - system = "aarch64-linux"; - maxJobs = 4; - supportedFeatures = ["kvm" "benchmarch" "big-parallel"]; - }]; + buildMachines = [ + { + hostName = "ssh-ng://builder@localhost"; + system = "aarch64-linux"; + maxJobs = 4; + supportedFeatures = [ + "kvm" + "benchmarch" + "big-parallel" + ]; + } + ]; gc.interval.Hour = 3; settings.auto-optimise-store = false; # Darwin bugs? }; diff --git a/garnix.yaml b/garnix.yaml index 7b4a3e2..950d73e 100644 --- a/garnix.yaml +++ b/garnix.yaml @@ -19,3 +19,5 @@ builds: - homeConfigurations.exodus - darwinConfigurations.MacBook-Pro - darwinConfigurations.MacBook-Prolocal + - nixosConfigurations.builder-x86 + - nixosConfigurations.builder-aarch diff --git a/home/default.nix b/home/default.nix index a76945c..f2b7485 100644 --- a/home/default.nix +++ b/home/default.nix @@ -41,5 +41,5 @@ in jeremiah = greg "jeremiah"; linode = greg "linode"; hosea = greg "hosea"; - vm-gitlab = greg "vm-gitlab"; + gitlab = greg "gitlab"; } diff --git a/hosts/default.nix b/hosts/default.nix index dbe50cd..028968c 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -4,7 +4,7 @@ nixpkgs, }: let - vm = args: (unstable (args // { extraMods = [ top.nixos-generators.nixosModules.all-formats ]; })); + inherit (top.nixunstable) lib; wsl = args: (unstable (args // { extraMods = [ top.wsl.nixosModules.wsl ]; })); unstable = { @@ -31,30 +31,58 @@ let # Local ones ./baseline.nix top.self.modules.nixosModule - ./${name} ] ++ extraMods; }; in -{ - genesis = unstable { name = "genesis"; }; - exodus = unstable { name = "exodus"; }; - zeke = unstable { name = "zeke"; }; - icdm-root = unstable { name = "icdm-root"; }; - linode = unstable { name = "linode"; }; - hosea = unstable { name = "hosea"; }; - jeremiah = unstable { name = "jeremiah"; }; - isaiah = unstable { name = "isaiah"; }; - - vm-gitlab = vm { name = "vm-gitlab"; }; - proxmoxtemplate = unstable { name = "proxmoxtemplate"; }; - - iso = unstable { name = "iso"; }; +(lib.genAttrs + (builtins.attrNames (lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./unstable))) + ( + name: + (unstable { + inherit name; + extraMods = [ ./unstable/${name} ]; + }) + ) +) +// (lib.genAttrs + (builtins.attrNames (lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./vm))) + ( + name: + (unstable { + inherit name; + extraMods = [ ./vm/${name} ]; + }) + ) +) +// { # nix build '.#nixosConfigurations.wsl.config.system.build.installer' nixos = wsl { name = "wsl"; }; # nix build '.#nixosConfigurations.wsl-aarch.config.system.build.installer' #nixos-arm = wsl { - #name = "wsl"; - #system = "aarch64-linux"; + # name = "wsl"; + # system = "aarch64-linux"; #}; + + builder-aarch = lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + "${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix" + { + virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; }; + boot.loader.grub.devices = [ "/dev/vda" ]; + } + ]; + }; + + builder-x86 = lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + "${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix" + { + virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; }; + boot.loader.grub.devices = [ "/dev/vda" ]; + } + ]; + }; } diff --git a/hosts/exodus/default.nix b/hosts/unstable/exodus/default.nix similarity index 100% rename from hosts/exodus/default.nix rename to hosts/unstable/exodus/default.nix diff --git a/hosts/exodus/hardware-configuration.nix b/hosts/unstable/exodus/hardware-configuration.nix similarity index 100% rename from hosts/exodus/hardware-configuration.nix rename to hosts/unstable/exodus/hardware-configuration.nix diff --git a/hosts/genesis/default.nix b/hosts/unstable/genesis/default.nix similarity index 100% rename from hosts/genesis/default.nix rename to hosts/unstable/genesis/default.nix diff --git a/hosts/genesis/hardware-configuration.nix b/hosts/unstable/genesis/hardware-configuration.nix similarity index 100% rename from hosts/genesis/hardware-configuration.nix rename to hosts/unstable/genesis/hardware-configuration.nix diff --git a/hosts/genesis/home-assistant.nix b/hosts/unstable/genesis/home-assistant.nix similarity index 100% rename from hosts/genesis/home-assistant.nix rename to hosts/unstable/genesis/home-assistant.nix diff --git a/hosts/genesis/net/hosts b/hosts/unstable/genesis/net/hosts similarity index 100% rename from hosts/genesis/net/hosts rename to hosts/unstable/genesis/net/hosts diff --git a/hosts/genesis/networking.nix b/hosts/unstable/genesis/networking.nix similarity index 100% rename from hosts/genesis/networking.nix rename to hosts/unstable/genesis/networking.nix diff --git a/hosts/genesis/networking/dhcp.nix b/hosts/unstable/genesis/networking/dhcp.nix similarity index 100% rename from hosts/genesis/networking/dhcp.nix rename to hosts/unstable/genesis/networking/dhcp.nix diff --git a/hosts/genesis/nftables.nft b/hosts/unstable/genesis/nftables.nft old mode 100644 new mode 100755 similarity index 100% rename from hosts/genesis/nftables.nft rename to hosts/unstable/genesis/nftables.nft diff --git a/hosts/hosea/default.nix b/hosts/unstable/hosea/default.nix similarity index 100% rename from hosts/hosea/default.nix rename to hosts/unstable/hosea/default.nix diff --git a/hosts/hosea/hardware-configuration.nix b/hosts/unstable/hosea/hardware-configuration.nix similarity index 100% rename from hosts/hosea/hardware-configuration.nix rename to hosts/unstable/hosea/hardware-configuration.nix diff --git a/hosts/icdm-root/boot.nix b/hosts/unstable/icdm-root/boot.nix similarity index 100% rename from hosts/icdm-root/boot.nix rename to hosts/unstable/icdm-root/boot.nix diff --git a/hosts/icdm-root/default.nix b/hosts/unstable/icdm-root/default.nix similarity index 100% rename from hosts/icdm-root/default.nix rename to hosts/unstable/icdm-root/default.nix diff --git a/hosts/icdm-root/filesystem.nix b/hosts/unstable/icdm-root/filesystem.nix similarity index 100% rename from hosts/icdm-root/filesystem.nix rename to hosts/unstable/icdm-root/filesystem.nix diff --git a/hosts/icdm-root/hardware-configuration.nix b/hosts/unstable/icdm-root/hardware-configuration.nix similarity index 100% rename from hosts/icdm-root/hardware-configuration.nix rename to hosts/unstable/icdm-root/hardware-configuration.nix diff --git a/hosts/icdm-root/location.nix b/hosts/unstable/icdm-root/location.nix similarity index 100% rename from hosts/icdm-root/location.nix rename to hosts/unstable/icdm-root/location.nix diff --git a/hosts/icdm-root/networking.nix b/hosts/unstable/icdm-root/networking.nix similarity index 100% rename from hosts/icdm-root/networking.nix rename to hosts/unstable/icdm-root/networking.nix diff --git a/hosts/icdm-root/wiki.nix b/hosts/unstable/icdm-root/wiki.nix similarity index 100% rename from hosts/icdm-root/wiki.nix rename to hosts/unstable/icdm-root/wiki.nix diff --git a/hosts/isaiah/default.nix b/hosts/unstable/isaiah/default.nix similarity index 100% rename from hosts/isaiah/default.nix rename to hosts/unstable/isaiah/default.nix diff --git a/hosts/isaiah/hardware-configuration.nix b/hosts/unstable/isaiah/hardware-configuration.nix similarity index 100% rename from hosts/isaiah/hardware-configuration.nix rename to hosts/unstable/isaiah/hardware-configuration.nix diff --git a/hosts/iso/default.nix b/hosts/unstable/iso/default.nix similarity index 100% rename from hosts/iso/default.nix rename to hosts/unstable/iso/default.nix diff --git a/hosts/jeremiah/default.nix b/hosts/unstable/jeremiah/default.nix similarity index 100% rename from hosts/jeremiah/default.nix rename to hosts/unstable/jeremiah/default.nix diff --git a/hosts/jeremiah/hardware-configuration.nix b/hosts/unstable/jeremiah/hardware-configuration.nix similarity index 100% rename from hosts/jeremiah/hardware-configuration.nix rename to hosts/unstable/jeremiah/hardware-configuration.nix diff --git a/hosts/linode/default.nix b/hosts/unstable/linode/default.nix similarity index 100% rename from hosts/linode/default.nix rename to hosts/unstable/linode/default.nix diff --git a/hosts/linode/git.nix b/hosts/unstable/linode/git.nix similarity index 100% rename from hosts/linode/git.nix rename to hosts/unstable/linode/git.nix diff --git a/hosts/linode/hardware-configuration.nix b/hosts/unstable/linode/hardware-configuration.nix similarity index 100% rename from hosts/linode/hardware-configuration.nix rename to hosts/unstable/linode/hardware-configuration.nix diff --git a/hosts/linode/matrix.nix b/hosts/unstable/linode/matrix.nix similarity index 100% rename from hosts/linode/matrix.nix rename to hosts/unstable/linode/matrix.nix diff --git a/hosts/linode/nextcloud.nix b/hosts/unstable/linode/nextcloud.nix similarity index 100% rename from hosts/linode/nextcloud.nix rename to hosts/unstable/linode/nextcloud.nix diff --git a/hosts/linode/nginx.nix b/hosts/unstable/linode/nginx.nix similarity index 100% rename from hosts/linode/nginx.nix rename to hosts/unstable/linode/nginx.nix diff --git a/hosts/linode/podman.nix b/hosts/unstable/linode/podman.nix similarity index 100% rename from hosts/linode/podman.nix rename to hosts/unstable/linode/podman.nix diff --git a/hosts/linode/postgres.nix b/hosts/unstable/linode/postgres.nix similarity index 100% rename from hosts/linode/postgres.nix rename to hosts/unstable/linode/postgres.nix diff --git a/hosts/proxmoxtemplate/default.nix b/hosts/unstable/proxmoxtemplate/default.nix similarity index 100% rename from hosts/proxmoxtemplate/default.nix rename to hosts/unstable/proxmoxtemplate/default.nix diff --git a/hosts/proxmoxtemplate/hardware-configuration.nix b/hosts/unstable/proxmoxtemplate/hardware-configuration.nix similarity index 100% rename from hosts/proxmoxtemplate/hardware-configuration.nix rename to hosts/unstable/proxmoxtemplate/hardware-configuration.nix diff --git a/hosts/zeke/boot.nix b/hosts/unstable/zeke/boot.nix similarity index 100% rename from hosts/zeke/boot.nix rename to hosts/unstable/zeke/boot.nix diff --git a/hosts/zeke/default.nix b/hosts/unstable/zeke/default.nix similarity index 100% rename from hosts/zeke/default.nix rename to hosts/unstable/zeke/default.nix diff --git a/hosts/zeke/hardware-configuration.nix b/hosts/unstable/zeke/hardware-configuration.nix similarity index 100% rename from hosts/zeke/hardware-configuration.nix rename to hosts/unstable/zeke/hardware-configuration.nix diff --git a/hosts/zeke/virt.nix b/hosts/unstable/zeke/virt.nix similarity index 100% rename from hosts/zeke/virt.nix rename to hosts/unstable/zeke/virt.nix diff --git a/hosts/vm-gitlab/default.nix b/hosts/vm/gitlab/default.nix similarity index 99% rename from hosts/vm-gitlab/default.nix rename to hosts/vm/gitlab/default.nix index ca73b2b..26d8f14 100644 --- a/hosts/vm-gitlab/default.nix +++ b/hosts/vm/gitlab/default.nix @@ -66,7 +66,7 @@ in }; networking = { - hostName = "vm-gitlab"; # Define your hostname. + hostName = "gitlab"; # Define your hostname. firewall.allowedTCPPorts = [ 80 registryPort diff --git a/hosts/vm-gitlab/hardware-configuration.nix b/hosts/vm/gitlab/hardware-configuration.nix similarity index 100% rename from hosts/vm-gitlab/hardware-configuration.nix rename to hosts/vm/gitlab/hardware-configuration.nix diff --git a/network.json b/network.json index e670dbd..7fb4113 100644 --- a/network.json +++ b/network.json @@ -95,7 +95,7 @@ "external": true, "system": "x86_64-linux" }, - "vm-gitlab": { + "gitlab": { "system": "x86_64-linux" }, "wsl": {