{ config, lib, pkgs, ... }: { environment.systemPackages = with pkgs; [ docker-compose ]; virtualisation = let postgresSocket = "/run/postgresql"; in { docker = { enable = true; enableNvidia = true; storageDriver = "btrfs"; autoPrune = { enable = true; flags = [ "--all" ]; dates = "weekly"; }; }; oci-containers = { backend = "docker"; containers = { collabora = { autoStart = true; image = "collabora/code"; imageFile = pkgs.dockerTools.pullImage { imageName = "collabora/code"; imageDigest = "sha256:aab41379baf5652832e9237fcc06a768096a5a7fccc66cf8bd4fdb06d2cbba7f"; sha256 = "sha256-M66lynhzaOEFnE15Sy1N6lBbGDxwNw6ap+IUJAvoCLs="; }; ports = [ "9980:9980" ]; environment = { TZ = "America/Mexico_City"; domain = "cloud.servidos.lat"; aliasgroup1 = "cloud.servidos.lat:443"; aliasgroup2 = "cloud.rotehaare.art:443"; dictionaries = "en_CA en_US es_MX es_ES fr_FR it pt_BR ru"; extra_params = '' --o:ssl.enable=false --o:ssl.termination=true ''; }; extraOptions = [ "--cap-add" "MKNOD" ]; }; ryot = { image = "ghcr.io/ignisda/ryot:latest"; ports = [ "8765:8000" ]; environment = { TZ = "America/Mexico_City"; DATABASE_URL = "postgres:///ryot?host=${postgresSocket}"; SERVER_INSECURE_COOKIE = "true"; VIDEO_GAMES_TWITCH_CLIENT_ID = "tfu0hw0zbdbu4lco4h72nqkb8krxp9"; VIDEO_GAMES_TWITCH_CLIENT_SECRET = "582ecfb01ihv6wnt8zbc9pf3hs9p54"; }; volumes = [ "${postgresSocket}:${postgresSocket}" ]; labels = { "flame.type" = "application"; "flame.name" = "Ryot"; "flame.url" = "tracker.servidos.lat"; "flame.icon" = "radar"; }; }; multi-scrobbler = { image = "foxxmd/multi-scrobbler"; ports = [ "9078:9078" ]; environment = { TZ = "America/Mexico_City"; PUID = "1000"; PGID = "100"; BASE_URL = "https://scrobble.servidos.lat"; JELLYFIN_USER = "jawz"; JELLYFIN_SERVER = "DaniloFlix"; DEEZER_CLIENT_ID = "657431"; DEEZER_CLIENT_SECRET = "cb2ad03682dd5a55dfef857388ef181e"; DEEZER_REDIRECT_URI = "http://192.168.1.69:9078/deezer/callback"; MALOJA_URL = "https://maloja.servidos.lat"; MALOJA_API_KEY = "LsnY2Ed484JlzUmF6EwhpGJ0gUCjJ2G5s1oJTwALJN8w1N3K6eXpfjBQp3raNPLA"; WS_ENABLE = "true"; }; volumes = [ "/var/lib/docker-configs/multi-scrobbler:/config" ]; labels = { "flame.type" = "application"; "flame.name" = "Multi-scrobbler"; "flame.url" = "scrobble.servidos.lat"; "flame.icon" = "broadcast"; }; }; maloja = { image = "krateng/maloja"; ports = [ "42010:42010" ]; environment = { TZ = "America/Mexico_City"; PUID = "1000"; PGID = "100"; MALOJA_DATA_DIRECTORY = "/mljdata"; MALOJA_SKIP_SETUP = "true"; MALOJA_FORCE_PASSWORD = "chichis"; }; volumes = [ "/var/lib/docker-configs/maloja:/mljdata" ]; labels = { "flame.type" = "application"; "flame.name" = "Maloja"; "flame.url" = "maloja.servidos.lat"; "flame.icon" = "bookmark-music"; }; }; flaresolverr = { autoStart = true; image = "ghcr.io/flaresolverr/flaresolverr:latest"; ports = [ "8191:8191" ]; }; flame = { autoStart = true; image = "pawelmalak/flame"; ports = [ "5005:5005" ]; volumes = [ "/var/lib/docker-configs/flame:/app/data" "/var/run/docker.sock:/var/run/docker.sock" ]; environment = { TZ = "America/Mexico_City"; PUID = "1000"; PGID = "100"; PASSWORD = "RkawpqMc8lR56QyU7JSfiLhG"; }; }; flame-nsfw = { autoStart = true; image = "pawelmalak/flame"; ports = [ "5007:5005" ]; volumes = [ "/var/lib/docker-configs/flame-nsfw:/app/data" ]; environment = { TZ = "America/Mexico_City"; PUID = "1000"; PGID = "100"; PASSWORD = "RkawpqMc8lR56QyU7JSfiLhG"; }; }; lidarr = { autoStart = true; image = "lscr.io/linuxserver/lidarr:latest"; ports = [ "8686:8686" ]; environment = { TZ = "America/Mexico_City"; PUID = "1000"; PGID = "100"; }; volumes = [ "/mnt/pool/multimedia:/data" "/mnt/pool/multimedia/media/Music:/music" "/mnt/pool/multimedia/media/MusicVideos:/music-videos" "/var/lib/docker-configs/lidarr/files:/config" "/var/lib/docker-configs/lidarr/custom-services.d:/custom-services.d" "/var/lib/docker-configs/lidarr/custom-cont-init.d:/custom-cont-init.d" ]; labels = { "flame.type" = "application"; "flame.name" = "Lidarr"; "flame.url" = "music.servidos.lat"; "flame.icon" = "music"; }; }; mealie = { autoStart = true; image = "ghcr.io/mealie-recipes/mealie:v1.0.0-RC2"; ports = [ "9925:9000" ]; volumes = [ "/var/lib/docker-configs/mealie:/app/data/" ]; environment = { TZ = "America/Mexico_City"; ALLOW_SIGNUP = "true"; PUID = "1000"; PGID = "100"; MAX_WORKERS = "1"; WEB_CONCURRENCY = "1"; BASE_URL = "https://mealie.servidos.lat"; SMTP_HOST = "smtp.gmail.com"; SMTP_PORT = "587"; SMTP_FROM_EMAIL = "stunner6399@gmail.com"; SMTP_USER = "stunner6399@gmail.com"; SMTP_PASSWORD = "ywofhisexfawslob"; }; extraOptions = [ "--memory=1g" # VA-API (omit for NVENC) ]; labels = { "flame.type" = "application"; "flame.name" = "Mealie"; "flame.url" = "mealie.servidos.lat"; "flame.icon" = "fridge"; }; }; go-vod = { autoStart = true; image = "radialapps/go-vod"; environment = { TZ = "America/Mexico_City"; NEXTCLOUD_HOST = "https://${config.services.nextcloud.hostName}"; NVIDIA_VISIBLE_DEVICES = "all"; }; volumes = [ "ncdata:/var/www/html:ro" ]; extraOptions = [ "--device=/dev/dri" # VA-API (omit for NVENC) ]; }; }; }; }; }