nixos/home/podman.nix

1350 lines
32 KiB
Nix

{
lib,
pkgs,
config,
...
}:
{
systemd.user.services.podman-prune = {
Unit = {
Description = "Prune unused Podman resources for admin user";
};
Service = {
Type = "oneshot";
ExecStart = "${pkgs.podman}/bin/podman system prune -f --all";
};
};
systemd.user.timers.podman-prune = {
Unit = {
Description = "Weekly Podman prune timer";
};
Timer = {
OnCalendar = "weekly";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
services.podman.networks = {
internal_net = {
driver = "bridge";
};
};
services.podman.enable = true;
services.podman.autoUpdate.enable = true;
services.podman.autoUpdate.onCalendar = "*-*-* 00:00";
services.podman.containers = {
# palworld = {
# image = "docker.io/thijsvanloef/palworld-server-docker:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/palworld"
# ];
# volumes = [
# "/pool/services/podman/palworld:/palworld"
# ];
# ports = [
# "8211:8211/udp"
# "27015:27015/udp"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
actual = {
image = "docker.io/actualbudget/actual-server:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/actual:/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# akaunting = {
# image = "docker.io/akaunting/akaunting:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/akaunting"
# ];
# volumes = [
# "/pool/services/podman/akaunting/data:/var/www/html/akaunting"
# ];
# ports = [
# "8003:80"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# akaunting-db = {
# image = "docker.io/mariadb:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/akaunting"
# ];
# volumes = [
# "/pool/services/podman/akaunting/db:/var/lib/mysql"
# ];
# ports = [
# "3307:3306"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
archivebox = {
image = "docker.io/archivebox/archivebox:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/archivebox"
];
volumes = [
"/pool/services/podman/archivebox:/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
authelia = {
image = "docker.io/authelia/authelia:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/authelia"
];
volumes = [
"/pool/services/podman/authelia/config:/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
caddy-local = {
image = "ghcr.io/caddybuilds/caddy-cloudflare:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/caddy-local/conf:/etc/caddy"
"/pool/services/podman/caddy-local/site:/srv"
"/pool/services/podman/caddy-local/data:/data"
"/pool/services/podman/caddy-local/config:/config"
];
ports = [
"80:80"
"443:443"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
cleanuparr = {
image = "ghcr.io/cleanuparr/cleanuparr:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/cleanuparr:/config"
"/pool/media/torrents:/downloads"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
bazarr = {
image = "lscr.io/linuxserver/bazarr:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/bazarr:/config"
"/pool/media/video/movies:/movies"
"/pool/media/video/tv:/tv"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
ddclient = {
image = "lscr.io/linuxserver/ddclient:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/ddclient:/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
eclipse-mosquitto = {
image = "docker.io/eclipse-mosquitto:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/eclipse-mosquitto:/mosquitto"
];
ports = [
"1883:1883"
"9001:8080"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
freshrss = {
image = "lscr.io/linuxserver/freshrss:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environment = {
OIDC_ENABLED="1";
OIDC_PROVIDER_METADATA_URL="https://authentik.mektem.com/application/o/fresh-rss/.well-known/openid-configuration";
OIDC_CLIENT_ID="PsqRnVLTezIKL7582E8pnKNFIF0W41kVyMhh4RoG";
OIDC_CLIENT_SECRET="h1XsvbUcRn33rq7qBBS0GUENEgn6zTJQeHpVPhzcqG4ekdwlCghIn1ALhydYXF1pfS8HaskM3KntHXDTC8a7athLxLzT95Gxr8OpvN9iOY75pUXrNnLJXUrY9o4qKM7m";
OIDC_X_FORWARDED_HEADERS="X-Forwarded-Port X-Forwarded-Proto X-Forwarded-Host";
OIDC_SCOPES="openid email profile";
};
volumes = [
"/pool/services/podman/freshrss:/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
frigate = {
image = "ghcr.io/blakeblackshear/frigate:0.17.0";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
devices = [ "/dev/dri/renderD128:/dev/dri/renderD128" ];
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/frigate"
];
volumes = [
"/etc/localtime:/etc/localtime:ro"
"/pool/services/podman/frigate:/config"
"/pool/services/cctv:/media/frigate"
];
ports = [
"1935:1935"
"8554:8554"
];
extraPodmanArgs = [
"--shm-size=256m"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# gitea-anubis = {
# image = "ghcr.io/techarohq/anubis:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/anubis-default" #WHY DOES THIS NOT WORK????
# "/pool/services/secrets/anubis-nginx"
# ];
# environment = {
# DIFFICULTY = "4";
# SERVE_ROBOTS_TXT = "true";
# POLICY_FNAME = "/data/cfg/botPolicy.json";
# OG_PASSTHROUGH = "true";
# OG_EXPIRY_TIME = "24h";
# BIND = ":3002";
# METRICS_BIND = ":9090";
# TARGET = "http://192.168.0.30:3001";
# };
#
# volumes = [
# "/pool/services/podman/anubis/botPolicy.json:/data/cfg/botPolicy.json:ro"
# ];
# ports = [
# "3002:3002"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
home-assistant = {
image = "ghcr.io/home-assistant/home-assistant:stable";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/etc/localtime:/etc/localtime:ro"
"/pool/services/podman/homeassistant:/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
homer = {
image = "docker.io/b4bz/homer";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/homer:/www/assets"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
hugo = {
image = "docker.io/hugomods/hugo:latest";
autoStart = true;
autoUpdate = "registry";
exec = "server -s /src/mektem.com -D";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/hugo/src:/src"
"/pool/services/podman/hugo/cache:/tmp/hugo_cache"
];
ports = [
"1313:1313"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
immich-db = {
image = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/immich"
];
volumes = [
"/pool/services/podman/immich/db:/var/lib/postgresql/data:z"
];
ports = [
"5433:5432"
];
userNS = "keep-id";
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
immich-machine-learning = {
image = "ghcr.io/immich-app/immich-machine-learning:release";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/immich"
];
volumes = [
"/pool/services/podman/immich/cache:/cache"
];
ports = [
"3003:3003"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
immich-redis = {
image = "registry.hub.docker.com/library/redis:6.2-alpine";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/immich"
];
ports = [
"6379:6379"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
immich-server = {
image = "ghcr.io/immich-app/immich-server:release";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/immich"
];
volumes = [
"/pool/services/immich:/usr/src/app/upload"
"/etc/localtime:/etc/localtime:ro"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
jellyfin = {
image = "docker.io/jellyfin/jellyfin:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
devices = [ "/dev/dri/renderD128:/dev/dri/renderD128" ];
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/jellyfin:/config"
"/pool/media/video/movies:/movies"
"/pool/media/video/tv:/tv"
"/pool/media/audio/music/flac:/music"
"/pool/media/video/family:/family"
"/pool/media/video/livetv:/livetv"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
jellyseerr = {
image = "ghcr.io/fallenbagel/jellyseerr";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/jellyseerr:/app/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# joplin = {
# image = "docker.io/joplin/server:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/joplin"
# ];
# ports = [
# "22300:22300"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# joplin-db = {
# image = "docker.io/postgres:15";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/joplin"
# ];
# volumes = [
# "/pool/services/podman/joplin-db:/var/lib/postgresql/data"
# ];
# ports = [
# "5432:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
kiwix = {
image = "ghcr.io/kiwix/kiwix-serve:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
exec = "*.zim";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/media/kiwix:/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
lazylibrarian = {
image = "lscr.io/linuxserver/lazylibrarian:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/lazylibrarian:/config"
"/pool/media/torrents:/downloads"
"/pool/media/books:/books"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
lidarr = {
image = "lscr.io/linuxserver/lidarr:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/lidarr:/config"
"/pool/media/audio/music/flac:/music"
"/pool/media/torrents:/downloads"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# mastodon = {
# image = "ghcr.io/linuxserver/mastodon:amd64-latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/mastodon"
# ];
# volumes = [
# "/pool/services/podman/mastodon/config:/config"
# ];
# ports = [
# "808:80"
# "8449:443"
# "3009:3000"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# mastodon-db = {
# image = "docker.io/postgres:16-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/mastodon-db"
# ];
# volumes = [
# "/pool/services/podman/mastodon/db:/var/lib/postgresql/data"
# ];
# ports = [
# "5435:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# mastodon-redis = {
# image = "registry.hub.docker.com/library/redis:6.2-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# ports = [
# "6382:6379"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
metube = {
image = "ghcr.io/alexta69/metube:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/media/youtube-dl:/downloads"
"/pool/media/audio/music/flac:/music"
];
ports = [
"8081:8081"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# nginx-anubis = {
# image = "ghcr.io/techarohq/anubis:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "vlan50_web";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/anubis-default" #WHY DOES THIS NOT WORK????
# "/pool/services/secrets/anubis-nginx"
# ];
# environment = {
# DIFFICULTY = "4";
# SERVE_ROBOTS_TXT = "true";
# POLICY_FNAME = "/data/cfg/botPolicy.json";
# OG_PASSTHROUGH = "true";
# OG_EXPIRY_TIME = "24h";
# BIND = ":8881";
# METRICS_BIND = ":9090";
# TARGET = "http://192.168.0.30:888";
# };
# volumes = [
# "/pool/services/podman/anubis/botPolicy.json:/data/cfg/botPolicy.json:ro"
# ];
# ports = [
# "8881:8881"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#nginx-proxy-manager = {
# image = "docker.io/jc21/nginx-proxy-manager:2.9.22";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# volumes = [
# "/pool/services/podman/nginx-proxy-manager:/data"
# "/pool/services/podman/letsencrypt:/etc/letsencrypt"
# ];
# ports = [
# "80:80"
# "443:443"
# "81:81"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
#};
nextcloud = {
image = "docker.io/nextcloud";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/nextcloud"
];
volumes = [
"/pool/services/podman/nextcloud/app:/var/www/html"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
nextcloud-db = {
image = "docker.io/mariadb:10.6";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
exec = "--transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/nextcloud"
];
volumes = [
"/pool/services/podman/nextcloud/db:/var/lib/mysql"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
ntfy = {
image = "docker.io/binwiederhier/ntfy";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
exec = "serve";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/ntfy"
];
volumes = [
"/pool/services/podman/ntfy:/var/lib/ntfy"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
ntp = {
image = "docker.io/cturra/ntp";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
ports = [
"123:123/udp"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
obsidian-livesync = {
image = "docker.io/oleduc/docker-obsidian-livesync-couchdb";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/obsidian-livesync"
];
volumes = [
"/pool/services/podman/obsidian-livesync/data:/opt/couchdb/data"
];
ports = [
"5984:5984"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
ollama = {
image = "docker.io/ollama/ollama:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/ollama"
];
volumes = [
"/pool/services/podman/ollama:/root/.ollama"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
open-webui = {
image = "ghcr.io/open-webui/open-webui:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/open-webui"
];
volumes = [
"/pool/services/podman/open-webui:/app/backend/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
paperless-ngx = {
image = "ghcr.io/paperless-ngx/paperless-ngx:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/paperless-ngx"
];
volumes = [
"/pool/services/podman/paperless-ngx/data:/usr/src/paperless/data"
"/pool/services/podman/paperless-ngx/media:/usr/src/paperless/media"
"/pool/services/podman/paperless-ngx/export:/usr/src/paperless/export"
"/pool/data/scans:/usr/src/paperless/consume"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
paperless-ngx-redis = {
image = "registry.hub.docker.com/library/redis:6.2-alpine";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
prowlarr = {
image = "lscr.io/linuxserver/prowlarr:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/prowlarr:/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
radarr = {
image = "lscr.io/linuxserver/radarr:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/radarr:/config"
"/pool/media/video/movies:/movies"
"/pool/media/torrents:/downloads"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
romm = {
image = "docker.io/rommapp/romm:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/romm"
];
volumes = [
"/pool/services/podman/romm/resources:/romm/resources"
"/pool/services/podman/romm/redis:/redis-data"
"/pool/services/podman/romm/assets:/romm/assets"
"/pool/services/podman/romm/config:/romm/config"
"/pool/media/romm:/romm/library"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
romm-db = {
image = "docker.io/mariadb:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/romm"
];
volumes = [
"/pool/services/podman/romm/db:/var/lib/mysql"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# rlcraft = {
# image = "docker.io/itzg/minecraft-server:java8";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/rlcraft"
# ];
# volumes = [
# "/pool/services/podman/minecraft/rlcraft/data:/data"
# ];
# ports = [
# "25565:25565"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
rutorrent = {
image = "docker.io/crazymax/rtorrent-rutorrent:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/rutorrent/passwd:/passwd"
"/pool/services/podman/rutorrent/data:/data"
"/pool/media/torrents:/downloads"
];
ports = [
"50000:50000"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
searxng = {
image = "docker.io/searxng/searxng:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/searxng:/etc/searxng"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
sonarr = {
image = "lscr.io/linuxserver/sonarr:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/sonarr:/config"
"/pool/media/video/tv:/tv"
"/pool/media/torrents:/downloads"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# tandoor = {
# image = "docker.io/vabene1111/recipes";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/tandoor"
# ];
# volumes = [
# "/pool/services/podman/tandoor/staticfiles:/opt/recipes/staticfiles"
# "/pool/services/podman/tandoor/mediafiles:/opt/recipes/mediafiles"
# ];
# ports = [
# "9092:80"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# tandoor-db = {
# image = "docker.io/postgres:16-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/tandoor"
# ];
# volumes = [
# "/pool/services/podman/tandoor/db:/var/lib/postgresql/data"
# ];
# ports = [
# "5434:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
thelounge = {
image = "lscr.io/linuxserver/thelounge:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/thelounge:/config"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
tinyauth = {
image = "ghcr.io/steveiliop56/tinyauth:v5";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/tinyauth"
];
volumes = [
"/pool/services/podman/tinyauth/:/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
tubearchivist = {
image = "docker.io/bbilly1/tubearchivist";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/tubearchivist"
];
volumes = [
"/pool/media/video/youtube:/youtube"
"/pool/services/podman/tubearchivist/cache:/cache"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
tubearchivist-redis = {
image = "docker.io/redis";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/tubearchivist/redis:/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
tubearchivist-es = {
image = "docker.io/bbilly1/tubearchivist-es";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/tubearchivist-es"
];
volumes = [
"/pool/services/podman/tubearchivist/es:/usr/share/elasticsearch/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
uptime-kuma = {
image = "docker.io/louislam/uptime-kuma";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
];
volumes = [
"/pool/services/podman/uptime-kuma:/app/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
vaultwarden = {
image = "docker.io/vaultwarden/server:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/vaultwarden"
];
volumes = [
"/pool/services/podman/vaultwarden:/data"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
webdav = {
image = "docker.io/bytemark/webdav:latest";
autoStart = true;
autoUpdate = "registry";
network = "internal_net";
environmentFile = [
"/pool/services/secrets/default"
"/pool/services/secrets/webdav"
];
volumes = [
"/pool/services/webdav:/var/lib/dav"
];
ports = [
"8009:80"
];
extraConfig = {
Service = {
TimeoutStartSec = 900;
};
};
};
# zigbee2mqtt = {
# image = "docker.io/koenkk/zigbee2mqtt";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# devices = [ "/dev/ttyACM0:/dev/ttyACM0" ];
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# volumes = [
# "/pool/services/podman/zigbee2mqtt:/app/data"
# ];
# ports = [
# "8808:8080"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
};
# Don't touch
home.stateVersion = "24.11";
}