diff --git a/flake.nix b/flake.nix index f67a74f..5f368bc 100644 --- a/flake.nix +++ b/flake.nix @@ -36,7 +36,7 @@ lib = pkgs.lib; pkgs-unstable = nixpkgs-unstable.legacyPackages.${controllerArch}; machines = (lib.modules.evalModules { modules = [ (import ./nixos/machines) ]; }).config.machines; - physicalMachines = lib.filterAttrs (n: v: v.kind == "physical") machines; + physicalMachines = lib.filterAttrs (n: v: v.isPhysical) machines; mkNixosSystems = systemDef: builtins.mapAttrs (name: machine: diff --git a/nixos/default.nix b/nixos/default.nix index b97f171..a9e34ab 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -6,8 +6,8 @@ disko.nixosModules.disko agenix.nixosModules.default ] - ++ lib.lists.optional (machine.kind == "physical") ./physical.nix - ++ lib.lists.optional (machine.kind == "virtual") ./virtual; + ++ lib.lists.optional machine.isPhysical ./physical.nix + ++ lib.lists.optional machine.isVirtual ./virtual; config = { time.timeZone = "Europe/Amsterdam"; diff --git a/nixos/machines/default.nix b/nixos/machines/default.nix index 3404f2b..cfd113a 100644 --- a/nixos/machines/default.nix +++ b/nixos/machines/default.nix @@ -1,8 +1,7 @@ { lib, ... }: let - machineOpts = { ... }: { + machineOpts = { config, ... }: { options = { - # TODO: rename to kind? kind = lib.mkOption { type = lib.types.enum [ "physical" "virtual" ]; description = '' @@ -36,6 +35,18 @@ let type = lib.types.bool; }; + # Derived value + isPhysical = lib.mkOption { + default = config.kind == "physical"; + type = lib.types.bool; + }; + + # Derived value + isVirtual = lib.mkOption { + default = config.kind == "virtual"; + type = lib.types.bool; + }; + nixosModule = lib.mkOption { default = { ... }: { }; type = lib.types.anything; diff --git a/nixos/modules/networking/default.nix b/nixos/modules/networking/default.nix index d437895..0717415 100644 --- a/nixos/modules/networking/default.nix +++ b/nixos/modules/networking/default.nix @@ -48,7 +48,7 @@ in { config = { networking = { - domain = if machine.kind == "physical" then "hyp" else "dmz"; + domain = if machine.isPhysical then "hyp" else "dmz"; nftables.enable = true; useDHCP = false; @@ -117,7 +117,7 @@ in { networkConfig.Bridge = cfg.dmz.bridgeName; }; }) - (lib.optionalAttrs (machine.kind == "virtual") { + (lib.optionalAttrs machine.isVirtual { "30-main-nic" = { matchConfig.Name = "en*"; diff --git a/nixos/physical.nix b/nixos/physical.nix index 74de363..281dc6f 100644 --- a/nixos/physical.nix +++ b/nixos/physical.nix @@ -57,7 +57,7 @@ microvm.vms = let - vmsForHypervisor = lib.filterAttrs (n: v: v.kind == "virtual" && v.hypervisorName == config.networking.hostName) machines; + vmsForHypervisor = lib.filterAttrs (n: v: v.isVirtual && v.hypervisorName == config.networking.hostName) machines; in builtins.mapAttrs (name: vm: diff --git a/nixos/virtual/docker_swarm.nix b/nixos/virtual/docker_swarm.nix index 0323e42..55f7309 100644 --- a/nixos/virtual/docker_swarm.nix +++ b/nixos/virtual/docker_swarm.nix @@ -12,7 +12,7 @@ in }; config = lib.mkIf cfg.enable { - lab.vm.shares = lib.mkIf (machine.kind == "virtual") [{ + lab.vm.shares = lib.mkIf machine.isVirtual [{ name = "docker"; mountPoint = "/var/lib/docker"; }];