135 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ nixpkgs, nixpkgs-unstable, sops-nix, ... }:
 | 
						|
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}
 | 
						|
      sops-nix.nixosModules.sops
 | 
						|
    ] ++ (if environment != "" then environments.${environment} else []);
 | 
						|
  }) hosts;
 | 
						|
in
 | 
						|
  generateDefaults {
 | 
						|
    gameserver-node-1 = {
 | 
						|
      site = "vs";
 | 
						|
      environment = "proxmox";
 | 
						|
    };
 | 
						|
    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 = {
 | 
						|
      hostNixpkgs = nixpkgs-unstable;
 | 
						|
      site = "vs";
 | 
						|
      environment = "proxmox";
 | 
						|
    };
 | 
						|
    matrix = {
 | 
						|
      hostNixpkgs = nixpkgs-unstable;
 | 
						|
      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";
 | 
						|
    };
 | 
						|
    coturn = {
 | 
						|
      site = "vs";
 | 
						|
      environment = "proxmox";
 | 
						|
    };
 | 
						|
    searx = {
 | 
						|
      hostNixpkgs = nixpkgs-unstable;
 | 
						|
      site = "vs";
 | 
						|
      environment = "proxmox";
 | 
						|
    };
 | 
						|
    torrent = {
 | 
						|
      hostNixpkgs = nixpkgs-unstable;
 | 
						|
      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";
 | 
						|
    };
 | 
						|
  }
 |