Full modular containers

This commit is contained in:
Chris Dombroski 2024-10-01 17:42:47 -04:00
parent 9d37d9f070
commit 57eb8d23c6
11 changed files with 229 additions and 140 deletions

View file

@ -25,10 +25,20 @@ in
ezModules.plymouth ezModules.plymouth
ezModules.docker-calibre ezModules.docker-calibre
ezModules.docker-calibre-web ezModules.docker-calibre-web
ezModules.docker-dind
ezModules.docker-flaresolverr
ezModules.docker-forgejo
ezModules.docker-homeassistant ezModules.docker-homeassistant
ezModules.docker-jellyfin ezModules.docker-jellyfin
ezModules.docker-postgres ezModules.docker-postgres
ezModules.docker-prowlarr
ezModules.docker-proxy ezModules.docker-proxy
ezModules.docker-qbittorrent
ezModules.docker-radarr
ezModules.docker-readarr
ezModules.docker-runner
ezModules.docker-sonarr
ezModules.docker-static-web
ezModules.docker-swag ezModules.docker-swag
ezModules.docker-zwave ezModules.docker-zwave
]; ];
@ -181,146 +191,7 @@ in
defaultNetwork.settings.dns_enabled = true; defaultNetwork.settings.dns_enabled = true;
autoPrune.enable = true; autoPrune.enable = true;
}; };
oci-containers.containers = { oci-containers.containers = { };
flaresolverr = {
image = "ghcr.io/flaresolverr/flaresolverr:latest";
environment.LOG_LEVEL = "info";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
qbittorrent = {
image = "lscr.io/linuxserver/qbittorrent:latest";
volumes = [
"qbittorrent-config:/config"
"/video-data/torrent:/data/torrent"
];
environment = {
TZ = "America/New_York";
UMASK_SET = "000";
DELUGE_LOGLEVEL = "error";
};
labels.swag = "enable";
ports = [
"34996:34996"
"34996:34996/udp"
];
extraOptions = [
"--pull=newer"
"--network=www"
];
};
prowlarr = {
image = "lscr.io/linuxserver/prowlarr:latest";
volumes = [ "prowlarr-config:/config" ];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
readarr = {
image = "lscr.io/linuxserver/readarr:develop";
volumes = [
"readarr-config:/config"
"/video-data:/data"
];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
radarr = {
image = "lscr.io/linuxserver/radarr:latest";
volumes = [
"radarr-config:/config"
"/video-data:/data"
];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
sonarr = {
image = "lscr.io/linuxserver/sonarr:latest";
volumes = [
"sonarr-config:/config"
"/video-data:/data"
];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
static = {
image = "docker.io/library/nginx:alpine";
volumes = [
"/srv/docker/nginx/static:/usr/share/nginx/html:ro"
"/srv/docker/nginx/config/static/default.conf:/etc/nginx/config.d/default.conf:ro"
];
labels = {
swag = "enable";
swag_url = "www.icanttype.org";
};
extraOptions = [
"--pull=newer"
"--network=www"
];
};
forgejo = {
image = "codeberg.org/forgejo/forgejo:8";
volumes = [
"forgejo-data:/data"
"/etc/localtime:/etc/localtime:ro"
];
labels = {
swag = "enable";
swag_url = "git.icanttype.org";
swag_port = "3000";
};
ports = [ "10022:22" ];
extraOptions = [
"--pull=newer"
"--network=www"
];
};
docker_dind = {
image = "docker.io/library/docker:dind";
cmd = [
"dockerd"
"-H"
"tcp://0.0.0.0:2375"
"--tls=false"
];
extraOptions = [
"--pull=newer"
"--privileged"
"--network=www"
];
};
runner = {
image = "code.forgejo.org/forgejo/runner:3.4.1";
dependsOn = [ "docker_dind" ];
environment.DOCKER_HOST = "tcp://docker_dind:2375";
volumes = [ "forgejo-runner:/data" ];
cmd = [
"forgejo-runner"
"daemon"
];
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
}; };
networking.firewall = { networking.firewall = {
interfaces."podman+" = { interfaces."podman+" = {

View file

@ -0,0 +1,22 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
docker_dind = {
image = "docker.io/library/docker:dind";
cmd = [
"dockerd"
"-H"
"tcp://0.0.0.0:2375"
"--tls=false"
];
extraOptions = [
"--pull=newer"
"--privileged"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,16 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
flaresolverr = {
image = "ghcr.io/flaresolverr/flaresolverr:latest";
environment.LOG_LEVEL = "info";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,25 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
forgejo = {
image = "codeberg.org/forgejo/forgejo:8";
volumes = [
"forgejo-data:/data"
"/etc/localtime:/etc/localtime:ro"
];
labels = {
swag = "enable";
swag_url = "git.icanttype.org";
swag_port = "3000";
};
ports = [ "10022:22" ];
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,18 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
prowlarr = {
image = "lscr.io/linuxserver/prowlarr:latest";
volumes = [ "prowlarr-config:/config" ];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,29 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
qbittorrent = {
image = "lscr.io/linuxserver/qbittorrent:latest";
volumes = [
"qbittorrent-config:/config"
"/video-data/torrent:/data/torrent"
];
environment = {
TZ = "America/New_York";
UMASK_SET = "000";
DELUGE_LOGLEVEL = "error";
};
labels.swag = "enable";
ports = [
"34996:34996"
"34996:34996/udp"
];
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,21 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
radarr = {
image = "lscr.io/linuxserver/radarr:latest";
volumes = [
"radarr-config:/config"
"/video-data:/data"
];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,21 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
readarr = {
image = "lscr.io/linuxserver/readarr:develop";
volumes = [
"readarr-config:/config"
"/video-data:/data"
];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,22 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
runner = {
image = "code.forgejo.org/forgejo/runner:3.4.1";
dependsOn = [ "docker_dind" ];
environment.DOCKER_HOST = "tcp://docker_dind:2375";
volumes = [ "forgejo-runner:/data" ];
cmd = [
"forgejo-runner"
"daemon"
];
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,21 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
sonarr = {
image = "lscr.io/linuxserver/sonarr:latest";
volumes = [
"sonarr-config:/config"
"/video-data:/data"
];
environment.TZ = "America/New_York";
labels.swag = "enable";
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}

View file

@ -0,0 +1,23 @@
{
virtualisation = {
containers.enable = true;
podman.enable = true;
oci-containers.containers = {
static = {
image = "docker.io/library/nginx:alpine";
volumes = [
"/srv/docker/nginx/static:/usr/share/nginx/html:ro"
"/srv/docker/nginx/config/static/default.conf:/etc/nginx/config.d/default.conf:ro"
];
labels = {
swag = "enable";
swag_url = "www.icanttype.org";
};
extraOptions = [
"--pull=newer"
"--network=www"
];
};
};
};
}