diff --git a/modules/generic/profiles.nix b/modules/generic/profiles.nix index 83710bab..ef8321a3 100644 --- a/modules/generic/profiles.nix +++ b/modules/generic/profiles.nix @@ -8,13 +8,6 @@ in headless.enable = mkEnableOption "Headless"; workstation.enable = mkEnableOption "Workstation"; laptop.enable = mkEnableOption "Laptop"; - - server = { - enable = mkEnableOption "Server"; - - # types of servers - oracle.enable = mkEnableOption "Oracle"; - hetzner.enable = mkEnableOption "Hetzner"; - }; + server.enable = mkEnableOption "Server"; }; } diff --git a/modules/home/profiles.nix b/modules/home/profiles.nix index c69813f4..e5f24b42 100644 --- a/modules/home/profiles.nix +++ b/modules/home/profiles.nix @@ -9,13 +9,8 @@ in headless workstation laptop + server ; - - server = { - inherit (cfg.server) enable; - oracle.enable = cfg.server.oracle.enable; - hetzner.enable = cfg.server.hetzner.enable; - }; }; programs.git.enable = lib.mkDefault cfg.workstation.enable; diff --git a/modules/nixos/hardware/cloud/default.nix b/modules/nixos/hardware/cloud/default.nix index 0731136b..0303e9d5 100644 --- a/modules/nixos/hardware/cloud/default.nix +++ b/modules/nixos/hardware/cloud/default.nix @@ -2,6 +2,9 @@ imports = [ # keep-sorted start ./hetzner + ./oracle.nix + ./overrides.nix + ./upcloud.nix # keep-sorted end ]; } diff --git a/modules/nixos/hardware/cloud/hetzner/default.nix b/modules/nixos/hardware/cloud/hetzner/default.nix index 2935d949..a510b8a0 100644 --- a/modules/nixos/hardware/cloud/hetzner/default.nix +++ b/modules/nixos/hardware/cloud/hetzner/default.nix @@ -3,7 +3,6 @@ # keep-sorted start ./garden.nix ./networking.nix - ./overrides.nix # keep-sorted end ]; } diff --git a/modules/nixos/hardware/cloud/hetzner/garden.nix b/modules/nixos/hardware/cloud/hetzner/garden.nix index e857b8a5..3f701edb 100644 --- a/modules/nixos/hardware/cloud/hetzner/garden.nix +++ b/modules/nixos/hardware/cloud/hetzner/garden.nix @@ -1,10 +1,14 @@ { lib, config, ... }: let - inherit (lib) mkIf; + inherit (lib) mkIf mkEnableOption; - cfg = config.garden.profiles.server.hetzner; + cfg = config.garden.profiles.hetzner; in { + options.garden.profiles.hetzner = { + enable = mkEnableOption "Hetzner Cloud profile"; + }; + config = mkIf cfg.enable { garden = { device.capabilities = { diff --git a/modules/nixos/hardware/cloud/hetzner/networking.nix b/modules/nixos/hardware/cloud/hetzner/networking.nix index 4194a57c..623efbf1 100644 --- a/modules/nixos/hardware/cloud/hetzner/networking.nix +++ b/modules/nixos/hardware/cloud/hetzner/networking.nix @@ -2,10 +2,10 @@ let inherit (lib) mkIf mkForce mkOption; - cfg = config.garden.profiles.server.hetzner; + cfg = config.garden.profiles.hetzner; in { - options.garden.profiles.server.hetzner = { + options.garden.profiles.hetzner = { ipv4 = mkOption { type = lib.types.str; description = '' diff --git a/modules/nixos/hardware/cloud/oracle.nix b/modules/nixos/hardware/cloud/oracle.nix new file mode 100644 index 00000000..ff0287cf --- /dev/null +++ b/modules/nixos/hardware/cloud/oracle.nix @@ -0,0 +1,13 @@ +{ lib, config, ... }: +let + inherit (lib) mkForce mkEnableOption; +in +{ + options.garden.profiles.oracle = { + enable = mkEnableOption "Oracle Cloud profile"; + }; + + config = lib.mkIf config.garden.profiles.oracle.enable { + services.thermald.enable = mkForce false; # Unavailable - device lacks thermal sensors. + }; +} diff --git a/modules/nixos/hardware/cloud/hetzner/overrides.nix b/modules/nixos/hardware/cloud/overrides.nix similarity index 78% rename from modules/nixos/hardware/cloud/hetzner/overrides.nix rename to modules/nixos/hardware/cloud/overrides.nix index 6c97e24e..c892f88c 100644 --- a/modules/nixos/hardware/cloud/hetzner/overrides.nix +++ b/modules/nixos/hardware/cloud/overrides.nix @@ -5,13 +5,17 @@ ... }: let - inherit (lib.modules) mkIf mkForce; - cfg = config.garden.profiles.server.hetzner; + inherit (lib) mkIf mkForce; + enable = + config.garden.profiles.hetzner.enable + || config.garden.profiles.upcloud.enable + || config.garden.profiles.oracle.enable; in { - config = mkIf cfg.enable { + config = mkIf enable { services = { - smartd.enable = mkForce false; # Unavailable - device lacks SMART capability. + # Unavailable - device lacks SMART capability. + smartd.enable = mkForce false; # Needed by the Hetzner Cloud password reset feature qemuGuest.enable = true; diff --git a/modules/nixos/hardware/cloud/upcloud.nix b/modules/nixos/hardware/cloud/upcloud.nix new file mode 100644 index 00000000..d873ac72 --- /dev/null +++ b/modules/nixos/hardware/cloud/upcloud.nix @@ -0,0 +1,23 @@ +{ lib, config, ... }: +let + inherit (lib) mkIf mkEnableOption; +in +{ + options.garden.profiles.upcloud = { + enable = mkEnableOption "UpCloud profile"; + }; + + config = mkIf config.garden.profiles.upcloud.enable { + garden = { + device = { + cpu = "intel"; + gpu = null; + }; + + system.boot = { + loader = "grub"; + grub.device = "/dev/vda"; + }; + }; + }; +} diff --git a/systems/aphrodite/default.nix b/systems/aphrodite/default.nix index 94545a39..b6ddfaf6 100644 --- a/systems/aphrodite/default.nix +++ b/systems/aphrodite/default.nix @@ -5,16 +5,7 @@ profiles = { headless.enable = true; server.enable = true; - }; - - device = { - cpu = "intel"; - gpu = null; - }; - - system.boot = { - loader = "grub"; - grub.device = "/dev/vda"; + upcloud.enable = true; }; services = { diff --git a/systems/aphrodite/hardware.nix b/systems/aphrodite/hardware.nix index 2eaedf7b..289c7f5c 100644 --- a/systems/aphrodite/hardware.nix +++ b/systems/aphrodite/hardware.nix @@ -1,4 +1,3 @@ -{ lib, ... }: { fileSystems."/" = { device = "/dev/disk/by-uuid/ecbc167c-3bfe-4801-90c1-51c272d316c6"; @@ -8,42 +7,4 @@ swapDevices = [ { device = "/dev/disk/by-uuid/a04ef6f2-82fe-4a8c-9273-fb80e7383dfa"; } ]; - - services = { - smartd.enable = lib.mkForce false; - qemuGuest.enable = true; - }; - - boot = { - loader.generationsDir.copyKernels = lib.mkForce false; - - initrd = { - availableKernelModules = [ - "ata_piix" - "uhci_hcd" - "xen_blkfront" - "vmw_pvscsi" - - "virtio_net" - "virtio_pci" - "virtio_mmio" - "virtio_blk" - "virtio_scsi" - "9p" - "9pnet_virtio" - ]; - kernelModules = [ - "nvme" - "virtio_balloon" - "virtio_console" - "virtio_rng" - "virtio_gpu" - ]; - }; - - loader.grub = { - useOSProber = lib.mkForce false; - efiSupport = lib.mkForce false; - }; - }; } diff --git a/systems/hephaestus/default.nix b/systems/hephaestus/default.nix index 4b417df5..7201a428 100644 --- a/systems/hephaestus/default.nix +++ b/systems/hephaestus/default.nix @@ -5,16 +5,7 @@ profiles = { headless.enable = true; server.enable = true; - }; - - device = { - cpu = "intel"; - gpu = null; - }; - - system.boot = { - loader = "grub"; - grub.device = "/dev/vda"; + upcloud.enable = true; }; services = { diff --git a/systems/hephaestus/hardware.nix b/systems/hephaestus/hardware.nix index 5bd69fe6..cac92f91 100644 --- a/systems/hephaestus/hardware.nix +++ b/systems/hephaestus/hardware.nix @@ -1,4 +1,3 @@ -{ lib, ... }: { fileSystems."/" = { device = "/dev/disk/by-uuid/4d503c5f-c51a-4eca-993c-5beb9b85b963"; @@ -8,42 +7,4 @@ swapDevices = [ { device = "/dev/disk/by-uuid/9455e246-4f8f-42cb-beb8-d1a071a1b5e0"; } ]; - - services = { - smartd.enable = lib.mkForce false; - qemuGuest.enable = true; - }; - - boot = { - loader.generationsDir.copyKernels = lib.mkForce false; - - initrd = { - availableKernelModules = [ - "ata_piix" - "uhci_hcd" - "xen_blkfront" - "vmw_pvscsi" - - "virtio_net" - "virtio_pci" - "virtio_mmio" - "virtio_blk" - "virtio_scsi" - "9p" - "9pnet_virtio" - ]; - kernelModules = [ - "nvme" - "virtio_balloon" - "virtio_console" - "virtio_rng" - "virtio_gpu" - ]; - }; - - loader.grub = { - useOSProber = lib.mkForce false; - efiSupport = lib.mkForce false; - }; - }; } diff --git a/systems/isis/default.nix b/systems/isis/default.nix index 5591ba60..795b4257 100644 --- a/systems/isis/default.nix +++ b/systems/isis/default.nix @@ -5,16 +5,7 @@ profiles = { headless.enable = true; server.enable = true; - }; - - device = { - cpu = "intel"; - gpu = null; - }; - - system.boot = { - loader = "grub"; - grub.device = "/dev/vda"; + upcloud.enable = true; }; services = { diff --git a/systems/isis/hardware.nix b/systems/isis/hardware.nix index 04c8132c..b5a7af58 100644 --- a/systems/isis/hardware.nix +++ b/systems/isis/hardware.nix @@ -1,46 +1,6 @@ -{ lib, ... }: { - fileSystems."/" = { device = "/dev/disk/by-uuid/71fc32ae-cc42-4020-a9ab-03b2b79d89c5"; fsType = "ext4"; }; - - services = { - smartd.enable = lib.mkForce false; - qemuGuest.enable = true; - }; - - boot = { - loader.generationsDir.copyKernels = lib.mkForce false; - - initrd = { - availableKernelModules = [ - "ata_piix" - "uhci_hcd" - "xen_blkfront" - "vmw_pvscsi" - - "virtio_net" - "virtio_pci" - "virtio_mmio" - "virtio_blk" - "virtio_scsi" - "9p" - "9pnet_virtio" - ]; - kernelModules = [ - "nvme" - "virtio_balloon" - "virtio_console" - "virtio_rng" - "virtio_gpu" - ]; - }; - - loader.grub = { - useOSProber = lib.mkForce false; - efiSupport = lib.mkForce false; - }; - }; } diff --git a/systems/minerva/default.nix b/systems/minerva/default.nix index b01094ff..3bfd3786 100644 --- a/systems/minerva/default.nix +++ b/systems/minerva/default.nix @@ -7,13 +7,12 @@ garden = { profiles = { headless.enable = true; - server = { + server.enable = true; + + hetzner = { enable = true; - hetzner = { - enable = true; - ipv4 = "91.107.198.173"; - ipv6 = "2a01:4f8:c012:2f67::1"; - }; + ipv4 = "91.107.198.173"; + ipv6 = "2a01:4f8:c012:2f67::1"; }; }; diff --git a/systems/skadi/default.nix b/systems/skadi/default.nix index daa417b4..8f95df85 100644 --- a/systems/skadi/default.nix +++ b/systems/skadi/default.nix @@ -5,6 +5,7 @@ profiles = { headless.enable = true; server.enable = true; + oracle.enable = true; }; device = { diff --git a/systems/skadi/hardware.nix b/systems/skadi/hardware.nix index bfa389ce..5bfd8454 100644 --- a/systems/skadi/hardware.nix +++ b/systems/skadi/hardware.nix @@ -1,46 +1,17 @@ { - lib, - pkgs, - modulesPath, - ... -}: -let - inherit (lib.modules) mkForce; -in -{ - imports = [ - (modulesPath + "/profiles/qemu-guest.nix") - ]; - - config = { - boot.initrd.availableKernelModules = [ - "xhci_pci" - "virtio_scsi" - ]; - - fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/3ac0d35f-0807-4553-a17e-24b227f1a3b1"; - fsType = "ext4"; - }; - - "/boot" = { - device = "/dev/disk/by-uuid/ED86-8CB2"; - fsType = "vfat"; - options = [ - "fmask=0022" - "dmask=0022" - ]; - }; + fileSystems = { + "/" = { + device = "/dev/disk/by-uuid/3ac0d35f-0807-4553-a17e-24b227f1a3b1"; + fsType = "ext4"; }; - services = { - smartd.enable = mkForce false; # Unavailable - device lacks SMART capability. - thermald.enable = mkForce false; # Unavailable - device lacks thermal sensors. - - qemuGuest.enable = true; + "/boot" = { + device = "/dev/disk/by-uuid/ED86-8CB2"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; }; - - systemd.services.qemu-guest-agent.path = [ pkgs.shadow ]; }; }