{ inputs }: let modules = import ../modules; mkHost = name: extraModules: inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ ./common.nix inputs.sops-nix.nixosModules.sops inputs.disko.nixosModules.disko # All three boxes are identical qemu guests, so they share one # hardware-configuration.nix and one disko disk layout (single # /dev/sda → GPT → LVM → ext4 root). disko derives fileSystems + # bootloader devices from disk-config.nix. db-host additionally # imports the /dev/sdb data disk from ./db-host.nix. ./hardware-configurations/hardware-configuration.nix ./hardware-configurations/disk-config.nix modules.gebos-secrets modules.gebos-postgres modules.gebos-supabase modules.gebos-caddy modules.gebos-emqx modules.gebos-ingester modules.gebos-frontend ./${name}.nix ] ++ extraModules; }; in { db-host = mkHost "db-host" [ ]; app-host = mkHost "app-host" [ ]; mqtt-ingest = mkHost "mqtt-ingest" [ ]; }