refactor containers

This commit is contained in:
♥ Minnie ♥ 2024-01-23 09:45:42 +08:00
parent 1d23c89f58
commit 2a15f00fa1
No known key found for this signature in database
11 changed files with 195 additions and 174 deletions

View file

@ -2,9 +2,17 @@
{ {
imports = [ imports = [
./dashboard.nix ./adguardhome.nix
./multimedia.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"; virtualisation.oci-containers.backend = "docker";
} }

View file

@ -2,7 +2,7 @@
{ {
virtualisation.oci-containers.containers = { virtualisation.oci-containers.containers = {
dashboard = { homarr = {
autoStart = true; autoStart = true;
image = "ghcr.io/ajnart/homarr:latest"; image = "ghcr.io/ajnart/homarr:latest";
ports = [ ports = [
@ -10,9 +10,9 @@
]; ];
volumes = [ volumes = [
# Container data # Container data
"/var/lib/homarr/configs:/app/data/configs:rw" "/srv/containers/homarr/configs:/app/data/configs:rw"
"/var/lib/homarr/icons:/app/public/icons:rw" "/srv/containers/homarr/icons:/app/public/icons:rw"
"/var/lib/homarr/data:/data:rw" "/srv/containers/homarr/data:/data:rw"
# Docker Integration # Docker Integration
"/var/run/docker.sock:/var/run/docker.sock:ro" "/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"
];
};
} }

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
}

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
};
}

View file

@ -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"
];
};
};
}