Simplify nixedo modules
This commit is contained in:
		
							parent
							
								
									791d206764
								
							
						
					
					
						commit
						828985d76f
					
				
					 6 changed files with 102 additions and 154 deletions
				
			
		|  | @ -29,14 +29,6 @@ | |||
|     ./modules/paperless.nix | ||||
|   ]; | ||||
| 
 | ||||
|   nixosModules = { | ||||
|     audiobookshelf.enable = true; | ||||
|     immich.enable = true; | ||||
|     jellyfin.enable = true; | ||||
|     paperless.enable = true; | ||||
|     pihole.enable = true; | ||||
|   }; | ||||
| 
 | ||||
|   programs.dconf.enable = true; | ||||
| 
 | ||||
|   services.logind.lidSwitchExternalPower = "ignore"; | ||||
|  |  | |||
|  | @ -1,26 +1,17 @@ | |||
| { config, lib, ... }: | ||||
| { config, ... }: | ||||
| 
 | ||||
| with lib; | ||||
| 
 | ||||
| let | ||||
|   cfg = config.nixosModules.audiobookshelf; | ||||
| in | ||||
| { | ||||
|   options.nixosModules.audiobookshelf.enable = mkEnableOption "Enable audiobookshelf"; | ||||
|   services = { | ||||
|     audiobookshelf = { | ||||
|       enable = true; | ||||
| 
 | ||||
|   config = mkIf cfg.enable { | ||||
|     services = { | ||||
|       audiobookshelf = { | ||||
|         enable = true; | ||||
|       port = 4001; | ||||
|     }; | ||||
| 
 | ||||
|         port = 4001; | ||||
|       }; | ||||
|     caddy.virtualHosts."audiobookshelf.oliverdavies.uk" = { | ||||
|       useACMEHost = "oliverdavies.uk"; | ||||
| 
 | ||||
|       caddy.virtualHosts."audiobookshelf.oliverdavies.uk" = { | ||||
|         useACMEHost = "oliverdavies.uk"; | ||||
| 
 | ||||
|         extraConfig = "reverse_proxy localhost:${toString config.services.audiobookshelf.port}"; | ||||
|       }; | ||||
|       extraConfig = "reverse_proxy localhost:${toString config.services.audiobookshelf.port}"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,101 +1,90 @@ | |||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| { pkgs, lib, ... }: | ||||
| 
 | ||||
| let | ||||
|   port = 8082; | ||||
| in | ||||
| { | ||||
|   options.nixosModules.pihole.enable = mkEnableOption "Enable pihole"; | ||||
| 
 | ||||
|   config = mkIf config.nixosModules.pihole.enable { | ||||
|     virtualisation = { | ||||
|       docker = { | ||||
|         enable = true; | ||||
|         autoPrune.enable = true; | ||||
|       }; | ||||
| 
 | ||||
|       oci-containers = { | ||||
|         backend = "docker"; | ||||
| 
 | ||||
|         containers."pihole" = { | ||||
|           image = "pihole/pihole:latest"; | ||||
| 
 | ||||
|           environment = { | ||||
|             "PIHOLE_DNS_1" = "8.8.8.8"; | ||||
|             "PIHOLE_DNS_2" = "8.8.4.4"; | ||||
|             "TZ" = "Europe/London"; | ||||
|           }; | ||||
| 
 | ||||
|           volumes = [ | ||||
|             "/home/opdavies/pihole/etc-dnsmasq.d:/etc/dnsmasq.d:rw" | ||||
|             "/home/opdavies/pihole/etc-pihole:/etc/pihole:rw" | ||||
|           ]; | ||||
| 
 | ||||
|           ports = [ | ||||
|             "53:53/tcp" | ||||
|             "53:53/udp" | ||||
|             "67:67/udp" | ||||
|             "${toString port}:80/tcp" | ||||
|           ]; | ||||
| 
 | ||||
|           log-driver = "journald"; | ||||
| 
 | ||||
|           extraOptions = [ | ||||
|             "--cap-add=NET_ADMIN" | ||||
|             "--network-alias=pihole" | ||||
|             "--network=pihole_default" | ||||
|           ]; | ||||
|         }; | ||||
|       }; | ||||
|   virtualisation = { | ||||
|     docker = { | ||||
|       enable = true; | ||||
|       autoPrune.enable = true; | ||||
|     }; | ||||
| 
 | ||||
|     systemd = { | ||||
|       services = { | ||||
|         "docker-pihole" = { | ||||
|           serviceConfig = { | ||||
|             Restart = lib.mkOverride 90 "always"; | ||||
|             RestartMaxDelaySec = lib.mkOverride 90 "1m"; | ||||
|             RestartSec = lib.mkOverride 90 "100ms"; | ||||
|             RestartSteps = lib.mkOverride 90 9; | ||||
|           }; | ||||
|     oci-containers = { | ||||
|       backend = "docker"; | ||||
| 
 | ||||
|           after = [ "docker-network-pihole_default.service" ]; | ||||
|           requires = [ "docker-network-pihole_default.service" ]; | ||||
|           partOf = [ "docker-compose-pihole-root.target" ]; | ||||
|           wantedBy = [ "docker-compose-pihole-root.target" ]; | ||||
|       containers."pihole" = { | ||||
|         image = "pihole/pihole:latest"; | ||||
| 
 | ||||
|         environment = { | ||||
|           "PIHOLE_DNS_1" = "8.8.8.8"; | ||||
|           "PIHOLE_DNS_2" = "8.8.4.4"; | ||||
|           "TZ" = "Europe/London"; | ||||
|         }; | ||||
| 
 | ||||
|         "docker-network-pihole_default" = { | ||||
|           path = [ pkgs.docker ]; | ||||
|         volumes = [ | ||||
|           "/home/opdavies/pihole/etc-dnsmasq.d:/etc/dnsmasq.d:rw" | ||||
|           "/home/opdavies/pihole/etc-pihole:/etc/pihole:rw" | ||||
|         ]; | ||||
| 
 | ||||
|           serviceConfig = { | ||||
|             Type = "oneshot"; | ||||
|             RemainAfterExit = true; | ||||
|             ExecStop = "docker network rm -f pihole_default"; | ||||
|           }; | ||||
|         ports = [ | ||||
|           "53:53/tcp" | ||||
|           "53:53/udp" | ||||
|           "67:67/udp" | ||||
|           "${toString port}:80/tcp" | ||||
|         ]; | ||||
| 
 | ||||
|           script = '' | ||||
|             docker network inspect pihole_default || docker network create pihole_default | ||||
|           ''; | ||||
|         log-driver = "journald"; | ||||
| 
 | ||||
|           partOf = [ "docker-compose-pihole-root.target" ]; | ||||
|           wantedBy = [ "docker-compose-pihole-root.target" ]; | ||||
|         }; | ||||
|       }; | ||||
| 
 | ||||
|       targets."docker-compose-pihole-root" = { | ||||
|         unitConfig = { | ||||
|           Description = "Root target generated by compose2nix."; | ||||
|         }; | ||||
| 
 | ||||
|         wantedBy = [ "multi-user.target" ]; | ||||
|         extraOptions = [ | ||||
|           "--cap-add=NET_ADMIN" | ||||
|           "--network-alias=pihole" | ||||
|           "--network=pihole_default" | ||||
|         ]; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   systemd = { | ||||
|     services = { | ||||
|       "docker-pihole" = { | ||||
|         serviceConfig = { | ||||
|           Restart = lib.mkOverride 90 "always"; | ||||
|           RestartMaxDelaySec = lib.mkOverride 90 "1m"; | ||||
|           RestartSec = lib.mkOverride 90 "100ms"; | ||||
|           RestartSteps = lib.mkOverride 90 9; | ||||
|         }; | ||||
| 
 | ||||
|         after = [ "docker-network-pihole_default.service" ]; | ||||
|         requires = [ "docker-network-pihole_default.service" ]; | ||||
|         partOf = [ "docker-compose-pihole-root.target" ]; | ||||
|         wantedBy = [ "docker-compose-pihole-root.target" ]; | ||||
|       }; | ||||
| 
 | ||||
|       "docker-network-pihole_default" = { | ||||
|         path = [ pkgs.docker ]; | ||||
| 
 | ||||
|         serviceConfig = { | ||||
|           Type = "oneshot"; | ||||
|           RemainAfterExit = true; | ||||
|           ExecStop = "docker network rm -f pihole_default"; | ||||
|         }; | ||||
| 
 | ||||
|         script = '' | ||||
|           docker network inspect pihole_default || docker network create pihole_default | ||||
|         ''; | ||||
| 
 | ||||
|         partOf = [ "docker-compose-pihole-root.target" ]; | ||||
|         wantedBy = [ "docker-compose-pihole-root.target" ]; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     targets."docker-compose-pihole-root" = { | ||||
|       unitConfig = { | ||||
|         Description = "Root target generated by compose2nix."; | ||||
|       }; | ||||
| 
 | ||||
|       wantedBy = [ "multi-user.target" ]; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,28 +1,19 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| { config, pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   options.nixosModules.immich.enable = mkEnableOption "Enable immich"; | ||||
| 
 | ||||
|   config = mkIf config.nixosModules.immich.enable { | ||||
|     services.immich = { | ||||
|   services = { | ||||
|     immich = { | ||||
|       enable = true; | ||||
|       group = "media"; | ||||
|       mediaLocation = "/mnt/media/immich"; | ||||
|     }; | ||||
| 
 | ||||
|     environment.systemPackages = [ pkgs.immich-cli ]; | ||||
| 
 | ||||
|     services.caddy.virtualHosts."immich.oliverdavies.uk" = { | ||||
|     caddy.virtualHosts."immich.oliverdavies.uk" = { | ||||
|       useACMEHost = "oliverdavies.uk"; | ||||
| 
 | ||||
|       extraConfig = "reverse_proxy localhost:${toString config.services.immich.port}"; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   environment.systemPackages = [ pkgs.immich-cli ]; | ||||
| } | ||||
|  |  | |||
|  | @ -1,19 +1,13 @@ | |||
| { config, lib, ... }: | ||||
| 
 | ||||
| with lib; | ||||
| 
 | ||||
| { | ||||
|   options.nixosModules.jellyfin.enable = mkEnableOption "Enable jellyfin"; | ||||
| 
 | ||||
|   config = mkIf config.nixosModules.jellyfin.enable { | ||||
|     services.jellyfin = { | ||||
|   services = { | ||||
|     jellyfin = { | ||||
|       enable = true; | ||||
|       openFirewall = true; | ||||
|       group = "media"; | ||||
|       configDir = "/mnt/media/jellyfin"; | ||||
|     }; | ||||
| 
 | ||||
|     services.caddy.virtualHosts."jellyfin.oliverdavies.uk" = { | ||||
|     caddy.virtualHosts."jellyfin.oliverdavies.uk" = { | ||||
|       useACMEHost = "oliverdavies.uk"; | ||||
| 
 | ||||
|       extraConfig = "reverse_proxy localhost:8096"; | ||||
|  |  | |||
|  | @ -1,30 +1,21 @@ | |||
| { config, lib, ... }: | ||||
| { config, ... }: | ||||
| 
 | ||||
| with lib; | ||||
| 
 | ||||
| let | ||||
|   url = "paperless.oliverdavies.uk"; | ||||
| in | ||||
| { | ||||
|   options.nixosModules.paperless.enable = mkEnableOption "Enable paperless"; | ||||
|   services = { | ||||
|     paperless = { | ||||
|       enable = true; | ||||
| 
 | ||||
|   config = mkIf config.nixosModules.paperless.enable { | ||||
|     services = { | ||||
|       paperless = { | ||||
|         enable = true; | ||||
|       dataDir = "/mnt/media/paperless"; | ||||
| 
 | ||||
|         dataDir = "/mnt/media/paperless"; | ||||
| 
 | ||||
|         settings = { | ||||
|           PAPERLESS_URL = "https://${url}"; | ||||
|         }; | ||||
|       settings = { | ||||
|         PAPERLESS_URL = "https://paperless.oliverdavies.uk"; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|       caddy.virtualHosts."${url}" = { | ||||
|         useACMEHost = "oliverdavies.uk"; | ||||
|     caddy.virtualHosts."${config.services.paperless.settings.PAPERLESS_URL}" = { | ||||
|       useACMEHost = "oliverdavies.uk"; | ||||
| 
 | ||||
|         extraConfig = "reverse_proxy localhost:28981"; | ||||
|       }; | ||||
|       extraConfig = "reverse_proxy localhost:28981"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue