diff --git a/hosts/nixedo/configuration.nix b/hosts/nixedo/configuration.nix index e218ec5b..ed39e6f2 100644 --- a/hosts/nixedo/configuration.nix +++ b/hosts/nixedo/configuration.nix @@ -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"; diff --git a/hosts/nixedo/modules/audiobookshelf.nix b/hosts/nixedo/modules/audiobookshelf.nix index 2701379f..4d424c53 100644 --- a/hosts/nixedo/modules/audiobookshelf.nix +++ b/hosts/nixedo/modules/audiobookshelf.nix @@ -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}"; }; }; } diff --git a/hosts/nixedo/modules/containers/pi-hole.nix b/hosts/nixedo/modules/containers/pi-hole.nix index 1e4ad2c7..9e125af7 100644 --- a/hosts/nixedo/modules/containers/pi-hole.nix +++ b/hosts/nixedo/modules/containers/pi-hole.nix @@ -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" ]; + }; + }; } diff --git a/hosts/nixedo/modules/immich.nix b/hosts/nixedo/modules/immich.nix index c015020d..d9ce6128 100644 --- a/hosts/nixedo/modules/immich.nix +++ b/hosts/nixedo/modules/immich.nix @@ -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 ]; } diff --git a/hosts/nixedo/modules/jellyfin.nix b/hosts/nixedo/modules/jellyfin.nix index ea8e21e3..69f1bc16 100644 --- a/hosts/nixedo/modules/jellyfin.nix +++ b/hosts/nixedo/modules/jellyfin.nix @@ -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"; diff --git a/hosts/nixedo/modules/paperless.nix b/hosts/nixedo/modules/paperless.nix index 907731bf..3fdbb146 100644 --- a/hosts/nixedo/modules/paperless.nix +++ b/hosts/nixedo/modules/paperless.nix @@ -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"; }; }; }