diff --git a/nixos/viridian/containers/default.nix b/nixos/viridian/containers/default.nix index 6cdc4f3..4476721 100644 --- a/nixos/viridian/containers/default.nix +++ b/nixos/viridian/containers/default.nix @@ -2,9 +2,17 @@ { imports = [ - ./dashboard.nix - ./multimedia.nix + ./adguardhome.nix + ./homarr.nix + ./jellyfin.nix + ./jellyseerr.nix + ./minecraft.nix + ./lidarr.nix + ./prowlarr.nix + ./qbittorrent.nix + ./radarr.nix + ./recyclarr.nix + ./sonarr.nix ]; - virtualisation.oci-containers.backend = "docker"; } diff --git a/nixos/viridian/containers/dashboard.nix b/nixos/viridian/containers/homarr.nix similarity index 54% rename from nixos/viridian/containers/dashboard.nix rename to nixos/viridian/containers/homarr.nix index 0ef465f..3a45948 100644 --- a/nixos/viridian/containers/dashboard.nix +++ b/nixos/viridian/containers/homarr.nix @@ -2,7 +2,7 @@ { virtualisation.oci-containers.containers = { - dashboard = { + homarr = { autoStart = true; image = "ghcr.io/ajnart/homarr:latest"; ports = [ @@ -10,9 +10,9 @@ ]; volumes = [ # Container data - "/var/lib/homarr/configs:/app/data/configs:rw" - "/var/lib/homarr/icons:/app/public/icons:rw" - "/var/lib/homarr/data:/data:rw" + "/srv/containers/homarr/configs:/app/data/configs:rw" + "/srv/containers/homarr/icons:/app/public/icons:rw" + "/srv/containers/homarr/data:/data:rw" # Docker Integration "/var/run/docker.sock:/var/run/docker.sock:ro" ]; @@ -21,12 +21,4 @@ ]; }; }; - - environment.persistence."/persist" = { - directories = [ - "/var/lib/homarr/configs" - "/var/lib/homarr/icons" - "/var/lib/homarr/data" - ]; - }; } diff --git a/nixos/viridian/containers/jellyfin.nix b/nixos/viridian/containers/jellyfin.nix new file mode 100644 index 0000000..a59347e --- /dev/null +++ b/nixos/viridian/containers/jellyfin.nix @@ -0,0 +1,29 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # Volunteer-built media solution that puts you in control of your media + jellyfin = { + autoStart = true; + image = "jellyfin/jellyfin:10.8.12"; + ports = [ + "8096:8096/tcp" # HTTP traffic + "8920:8920/tcp" # HTTPS traffic + # "1900:1900/udp" # Service auto-discovery + "7359:7359/udp" # Client auto-discovery + ]; + volumes = [ + # Media library + "/srv/multimedia/library:/media:ro" + # Container data + "/srv/containers/jellyfin/config:/config:rw" + "/srv/containers/jellyfin/cache:/cache:rw" + ]; + extraOptions = [ + "--group-add=303" + "--device=/dev/dri/renderD128:/dev/dri/renderD128" + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/jellyseerr.nix b/nixos/viridian/containers/jellyseerr.nix new file mode 100644 index 0000000..e805e6d --- /dev/null +++ b/nixos/viridian/containers/jellyseerr.nix @@ -0,0 +1,20 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # Request management + jellyseerr = { + autoStart = true; + image = "ghcr.io/hotio/jellyseerr"; + ports = [ + "5055:5055/tcp" # WebUI + ]; + volumes = [ + "/srv/containers/jellyseerr:/config" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/lidarr.nix b/nixos/viridian/containers/lidarr.nix new file mode 100644 index 0000000..30f72bc --- /dev/null +++ b/nixos/viridian/containers/lidarr.nix @@ -0,0 +1,23 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # # Music collection manager for Usenet and BitTorrent users + lidarr = { + autoStart = true; + image = "ghcr.io/hotio/lidarr:nightly-2.0.2.3782"; + ports = [ + "8686:8686/tcp" # WebUI + ]; + volumes = [ + # Media library + "/srv/multimedia:/data:rw" + # Container data + "/srv/containers/lidarr:/config:rw" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/multimedia.nix b/nixos/viridian/containers/multimedia.nix deleted file mode 100644 index 5a88c8f..0000000 --- a/nixos/viridian/containers/multimedia.nix +++ /dev/null @@ -1,159 +0,0 @@ -{ ... }: - -{ - virtualisation.oci-containers.containers = { - # Volunteer-built media solution that puts you in control of your media - jellyfin = { - autoStart = true; - image = "jellyfin/jellyfin:10.8.12"; - ports = [ - "8096:8096/tcp" # HTTP traffic - "8920:8920/tcp" # HTTPS traffic - # "1900:1900/udp" # Service auto-discovery - "7359:7359/udp" # Client auto-discovery - ]; - volumes = [ - # Media library - "/mnt/data/htpc/media:/media:ro" - # Container data - "/var/lib/jellyfin/config:/config:rw" - "/var/lib/jellyfin/cache:/cache:rw" - ]; - extraOptions = [ - "--group-add=303" - "--device=/dev/dri/renderD128:/dev/dri/renderD128" - "--network=media-stack" - ]; - }; - - # PVR for Usenet and BitTorrent users - sonarr = { - autoStart = true; - image = "ghcr.io/hotio/sonarr:nightly-4.0.0.710"; - ports = [ - "8989:8989/tcp" # WebUI - ]; - volumes = [ - # Media library - "/mnt/data/htpc:/data:rw" - # Container data - "/var/lib/sonarr:/config:rw" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - - # Movie collection manager for Usenet and BitTorrent users - radarr = { - autoStart = true; - image = "ghcr.io/hotio/radarr:nightly-5.1.3.8237"; - ports = [ - "7878:7878/tcp" # WebUI - ]; - volumes = [ - # Media library - "/mnt/data/htpc:/data:rw" - # Container data - "/var/lib/radarr:/config:rw" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - - # # Music collection manager for Usenet and BitTorrent users - lidarr = { - autoStart = true; - image = "ghcr.io/hotio/lidarr:nightly-2.0.2.3782"; - ports = [ - "8686:8686/tcp" # WebUI - ]; - volumes = [ - # Media library - "/mnt/data/htpc:/data:rw" - # Container data - "/var/lib/lidarr:/config:rw" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - - # Indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. - prowlarr = { - autoStart = true; - image = "ghcr.io/hotio/prowlarr:nightly-1.10.3.4070"; - ports = [ - "9696:9696/tcp" # WebUI - ]; - volumes = [ - # Container data - "/var/lib/prowlarr:/config:rw" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - - # Automatically synchronize recommended settings from the TRaSH guides to your Sonarr/Radarr instances - recyclarr = { - autoStart = true; - image = "ghcr.io/hotio/recyclarr:6.0"; - volumes = [ - "/var/lib/recyclarr:/config" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - - # # Open-source software alternative to µTorrent - qbittorrent = { - autoStart = true; - image = "ghcr.io/hotio/qbittorrent:release-4.6.0"; - ports = [ - "8080:8080/tcp" # WebUI - "32372:32372/tcp" # Transport protocol - ]; - volumes = [ - # Seedbox - "/mnt/data/htpc/torrents:/data/torrents:rw" - "/var/lib/qbittorrent:/config:rw" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - - # Request management - jellyseerr = { - autoStart = true; - image = "ghcr.io/hotio/jellyseerr"; - ports = [ - "5055:5055/tcp" # WebUI - ]; - volumes = [ - "/var/lib/jellyseerr:/config" - ]; - extraOptions = [ - "--network=media-stack" - ]; - }; - }; - - environment.persistence."/persist" = { - directories = [ - "/var/lib/jellyfin/config" - "/var/lib/jellyfin/cache" - "/var/lib/sonarr" - "/var/lib/radarr" - "/var/lib/lidarr" - "/var/lib/prowlarr" - "/var/lib/recyclarr" - "/var/lib/qbittorrent" - "/var/lib/jellyseerr" - ]; - }; -} - diff --git a/nixos/viridian/containers/prowlarr.nix b/nixos/viridian/containers/prowlarr.nix new file mode 100644 index 0000000..48e67ff --- /dev/null +++ b/nixos/viridian/containers/prowlarr.nix @@ -0,0 +1,21 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # Indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. + prowlarr = { + autoStart = true; + image = "ghcr.io/hotio/prowlarr:nightly-1.10.3.4070"; + ports = [ + "9696:9696/tcp" # WebUI + ]; + volumes = [ + # Container data + "/srv/containers/prowlarr:/config:rw" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/qbittorrent.nix b/nixos/viridian/containers/qbittorrent.nix new file mode 100644 index 0000000..e9550fb --- /dev/null +++ b/nixos/viridian/containers/qbittorrent.nix @@ -0,0 +1,23 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # # Open-source software alternative to µTorrent + qbittorrent = { + autoStart = true; + image = "ghcr.io/hotio/qbittorrent:release-4.6.0"; + ports = [ + "8080:8080/tcp" # WebUI + "32372:32372/tcp" # Transport protocol + ]; + volumes = [ + # Seedbox + "/srv/multimedia/torrents:/data/torrents:rw" + "/srv/containers/qbittorrent:/config:rw" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/radarr.nix b/nixos/viridian/containers/radarr.nix new file mode 100644 index 0000000..6f0b65d --- /dev/null +++ b/nixos/viridian/containers/radarr.nix @@ -0,0 +1,23 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # Movie collection manager for Usenet and BitTorrent users + radarr = { + autoStart = true; + image = "ghcr.io/hotio/radarr:nightly-5.1.3.8237"; + ports = [ + "7878:7878/tcp" # WebUI + ]; + volumes = [ + # Media library + "/srv/multimedia:/data:rw" + # Container data + "/srv/containers/radarr:/config:rw" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/recyclarr.nix b/nixos/viridian/containers/recyclarr.nix new file mode 100644 index 0000000..138589e --- /dev/null +++ b/nixos/viridian/containers/recyclarr.nix @@ -0,0 +1,17 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # Automatically synchronize recommended settings from the TRaSH guides to your Sonarr/Radarr instances + recyclarr = { + autoStart = true; + image = "ghcr.io/hotio/recyclarr:6.0"; + volumes = [ + "/srv/containers/recyclarr:/config" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} diff --git a/nixos/viridian/containers/sonarr.nix b/nixos/viridian/containers/sonarr.nix new file mode 100644 index 0000000..d39e799 --- /dev/null +++ b/nixos/viridian/containers/sonarr.nix @@ -0,0 +1,24 @@ +{ ... }: + +{ + virtualisation.oci-containers.containers = { + # PVR for Usenet and BitTorrent users + sonarr = { + autoStart = true; + image = "ghcr.io/hotio/sonarr:nightly-4.0.0.710"; + ports = [ + "8989:8989/tcp" # WebUI + ]; + volumes = [ + # Media library + "/srv/multimedia:/data:rw" + # Container data + "/srv/containers/sonarr:/config:rw" + ]; + extraOptions = [ + "--network=media-stack" + ]; + }; + }; +} +