{ nixpkgs, nixpkgs-unstable, ... }: let # Set of environment specific modules environments = { "proxmox" = [ ./config/environments/proxmox-vm ]; "openstack" = [ ./config/environments/openstack-vm ]; }; generateDefaults = hosts: builtins.mapAttrs (name: { hostNixpkgs ? nixpkgs, system ? "x86_64-linux", # pkgs is explicitly defined so that overlays for each host can easily be created pkgs ? hostNixpkgs.legacyPackages.${system}, environment ? "", site }: { inherit hostNixpkgs system pkgs environment site; # define common and host modules and additionally add environment specific modules modules = [ ./config/common ./config/hosts/${name} ] ++ (if environment != "" then environments.${environment} else []); }) hosts; in generateDefaults { #fee = { # site = "wg"; #}; hydra = { site = "vs"; environment = "proxmox"; }; iperf = { site = "vs"; environment = "proxmox"; }; jellyfin = { site = "vs"; environment = "proxmox"; }; jellyseerr = { site = "vs"; environment = "proxmox"; }; forgejo = { site = "vs"; environment = "proxmox"; }; keycloak = { site = "vs"; environment = "proxmox"; }; lifeline = { site = "io"; }; mail-1 = { site = "vs"; environment = "proxmox"; }; mail-2 = { site = "wg"; environment = "proxmox"; }; mastodon = { site = "vs"; environment = "proxmox"; }; matrix = { site = "vs"; environment = "proxmox"; }; metrics = { site = "vs"; environment = "proxmox"; }; navidrome = { hostNixpkgs = nixpkgs-unstable; site = "wg"; environment = "proxmox"; }; netbox = { site = "vs"; environment = "proxmox"; }; nextcloud = { site = "vs"; environment = "proxmox"; }; nitter = { site = "vs"; environment = "proxmox"; }; paperless = { site = "wg"; environment = "proxmox"; }; coturn = { site = "vs"; environment = "proxmox"; }; searx = { hostNixpkgs = nixpkgs-unstable; site = "vs"; environment = "proxmox"; }; torrent = { site = "vs"; environment = "proxmox"; }; tor-relay = { site = "vs"; environment = "proxmox"; }; valkyrie = { site = "af"; environment = "openstack"; }; web-public-1 = { site = "wg"; environment = "proxmox"; }; web-public-2 = { site = "vs"; environment = "proxmox"; }; web-nonpublic-linuxcrewd = { hostNixpkgs = nixpkgs-unstable; site = "vs"; environment = "proxmox"; }; }