118 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { nixpkgs, nixpkgs-unstable, nixpkgs-master, ... }:
 | |
| 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 {
 | |
|     hydra = {
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     ikiwiki = {
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     iperf = {
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     jellyfin = {
 | |
|       hostNixpkgs = nixpkgs-unstable;
 | |
|       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";
 | |
|     };
 | |
|     mastodon = {
 | |
|       hostNixpkgs = nixpkgs-unstable;
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     matrix = {
 | |
|       hostNixpkgs = nixpkgs-unstable;
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     metrics = {
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     netbox = {
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     nextcloud = {
 | |
|       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-2 = {
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|     web-nonpublic-linuxcrewd = {
 | |
|       hostNixpkgs = nixpkgs-unstable;
 | |
|       site = "vs";
 | |
|       environment = "proxmox";
 | |
|     };
 | |
|   }
 |