From f6d2ff1544c2e156e45a3a8583adced32d2f34a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20Schwarz=C3=A4ugl?= Date: Wed, 1 Apr 2026 12:19:56 +0200 Subject: [PATCH] wip: host generation --- SwarselSystems.org | 98 +++++++++++++++++++++++++++++++++++++++++++++- flake/den.nix | 12 ++++++ flake/hosts.nix | 81 +++++++++++++++++++++++++++++++++++++- 3 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 flake/den.nix diff --git a/SwarselSystems.org b/SwarselSystems.org index e883e79..242ff71 100644 --- a/SwarselSystems.org +++ b/SwarselSystems.org @@ -2276,7 +2276,86 @@ The rest of the functions are used to build full NixOS systems as well as halfCo #+begin_src nix-ts :tangle flake/hosts.nix { self, inputs, ... }: + let + inherit (self) outputs; + inherit (outputs) lib homeLib; + in { + + den.hosts.x86_64-linux.pyramid = + let + configName = "pyramid"; + arch = "x86_64-linux"; + in + { + modules = [ + inputs.disko.nixosModules.disko + inputs.home-manager.nixosModules.home-manager + inputs.impermanence.nixosModules.impermanence + inputs.lanzaboote.nixosModules.lanzaboote + inputs.microvm.nixosModules.host + inputs.microvm.nixosModules.microvm + inputs.nix-index-database.nixosModules.nix-index + inputs.nix-minecraft.nixosModules.minecraft-servers + inputs.nix-topology.nixosModules.default + inputs.nswitch-rcm-nix.nixosModules.nswitch-rcm + inputs.simple-nixos-mailserver.nixosModules.default + inputs.sops.nixosModules.sops + inputs.stylix.nixosModules.stylix + inputs.swarsel-nix.nixosModules.default + inputs.nixos-nftables-firewall.nixosModules.default + inputs.pia.nixosModules.default + inputs.niritiling.nixosModules.default + inputs.noctoggle.nixosModules.default + (inputs.nixos-extra-modules + "/modules/guests") + (inputs.nixos-extra-modules + "/modules/interface-naming.nix") + "${self}/hosts/nixos/${arch}/${configName}" + "${self}/profiles/nixos" + "${self}/modules/nixos" + { + _module.args.dns = inputs.dns; + + microvm.guest.enable = lib.mkDefault false; + + networking.hostName = lib.swarselsystems.mkStrong configName; + + node = { + name = lib.mkForce configName; + arch = lib.mkForce arch; + type = lib.mkForce "nixos"; + secretsDir = ../hosts/nixos/${arch}/${configName}/secrets; + configDir = ../hosts/nixos/${arch}/${configName}; + lockFromBootstrapping = lib.swarselsystems.mkStrong true; + }; + + swarselprofiles = { + minimal = lib.swarselsystems.mkStrong true; + }; + + swarselmodules.server = { + ssh = lib.swarselsystems.mkStrong true; + }; + + swarselsystems = { + mainUser = lib.swarselsystems.mkStrong "swarsel"; + }; + } + ]; + users.swarsel = { }; + instantiate = (inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs outputs self homeLib configName arch; + minimal = false; + inherit (outputs.pkgs.${arch}) lib; + inherit (outputs) nodes topologyPrivate; + globals = outputs.globals.${arch}; + type = "nixos"; + withHomeManager = true; + extraModules = [ "${self}/modules/nixos/common/globals.nix" ]; + }; + }); + }; + flake = { config, ... }: let inherit (self) outputs; @@ -2422,7 +2501,7 @@ The rest of the functions are used to build full NixOS systems as well as halfCo if builtins.pathExists hostDir then builtins.attrNames ( - lib.filterAttrs (_: type: type == "directory") + lib.filterAttrs (name: type: type == "directory" && name != "pyramid") (builtins.readDir hostDir) ) else [ ]; @@ -3106,6 +3185,23 @@ This exposes all of my modular configuration as modules. Other people can use th }; } +#+end_src +** Den + +#+begin_src nix-ts :tangle flake/den.nix + { self, inputs, ... }: + let + inherit (self.outputs) lib; + in + { + imports = [ inputs.den.flakeModule ]; + + den = { + schema.user.classes = lib.mkDefault [ "homeManager" ]; + default.homeManager.home.stateVersion = "23.05"; + }; + } + #+end_src ** Apps :PROPERTIES: diff --git a/flake/den.nix b/flake/den.nix new file mode 100644 index 0000000..ebb69cc --- /dev/null +++ b/flake/den.nix @@ -0,0 +1,12 @@ +{ self, inputs, ... }: +let + inherit (self.outputs) lib; +in +{ + imports = [ inputs.den.flakeModule ]; + + den = { + schema.user.classes = lib.mkDefault [ "homeManager" ]; + default.homeManager.home.stateVersion = "23.05"; + }; +} diff --git a/flake/hosts.nix b/flake/hosts.nix index 1668216..261e776 100644 --- a/flake/hosts.nix +++ b/flake/hosts.nix @@ -1,5 +1,84 @@ { self, inputs, ... }: +let + inherit (self) outputs; + inherit (outputs) lib homeLib; +in { + + den.hosts.x86_64-linux.pyramid = + let + configName = "pyramid"; + arch = "x86_64-linux"; + in + { + modules = [ + inputs.disko.nixosModules.disko + inputs.home-manager.nixosModules.home-manager + inputs.impermanence.nixosModules.impermanence + inputs.lanzaboote.nixosModules.lanzaboote + inputs.microvm.nixosModules.host + inputs.microvm.nixosModules.microvm + inputs.nix-index-database.nixosModules.nix-index + inputs.nix-minecraft.nixosModules.minecraft-servers + inputs.nix-topology.nixosModules.default + inputs.nswitch-rcm-nix.nixosModules.nswitch-rcm + inputs.simple-nixos-mailserver.nixosModules.default + inputs.sops.nixosModules.sops + inputs.stylix.nixosModules.stylix + inputs.swarsel-nix.nixosModules.default + inputs.nixos-nftables-firewall.nixosModules.default + inputs.pia.nixosModules.default + inputs.niritiling.nixosModules.default + inputs.noctoggle.nixosModules.default + (inputs.nixos-extra-modules + "/modules/guests") + (inputs.nixos-extra-modules + "/modules/interface-naming.nix") + "${self}/hosts/nixos/${arch}/${configName}" + "${self}/profiles/nixos" + "${self}/modules/nixos" + { + _module.args.dns = inputs.dns; + + microvm.guest.enable = lib.mkDefault false; + + networking.hostName = lib.swarselsystems.mkStrong configName; + + node = { + name = lib.mkForce configName; + arch = lib.mkForce arch; + type = lib.mkForce "nixos"; + secretsDir = ../hosts/nixos/${arch}/${configName}/secrets; + configDir = ../hosts/nixos/${arch}/${configName}; + lockFromBootstrapping = lib.swarselsystems.mkStrong true; + }; + + swarselprofiles = { + minimal = lib.swarselsystems.mkStrong true; + }; + + swarselmodules.server = { + ssh = lib.swarselsystems.mkStrong true; + }; + + swarselsystems = { + mainUser = lib.swarselsystems.mkStrong "swarsel"; + }; + } + ]; + users.swarsel = { }; + instantiate = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs outputs self homeLib configName arch; + minimal = false; + inherit (outputs.pkgs.${arch}) lib; + inherit (outputs) nodes topologyPrivate; + globals = outputs.globals.${arch}; + type = "nixos"; + withHomeManager = true; + extraModules = [ "${self}/modules/nixos/common/globals.nix" ]; + }; + }; + }; + flake = { config, ... }: let inherit (self) outputs; @@ -145,7 +224,7 @@ if builtins.pathExists hostDir then builtins.attrNames ( - lib.filterAttrs (_: type: type == "directory") + lib.filterAttrs (name: type: type == "directory" && name != "pyramid") (builtins.readDir hostDir) ) else [ ];