refactor(docker): share more vars between compose.nix files
All checks were successful
Discord / discord commits (push) Has been skipped

This commit is contained in:
matt1432 2025-02-15 12:16:15 -05:00
parent 1c8b80283e
commit f481168458
18 changed files with 115 additions and 70 deletions

View file

@ -1,28 +1,33 @@
{...}: let
globalEnv = {
configPath = "/var/lib/docker-data";
mainUID = "1000";
mainGID = "1000";
TZ = "America/New_York";
};
in {
imports = [
(import ./forgejo/compose.nix configPath)
(import ./freshrss/compose.nix configPath)
(import ./gameyfin/compose.nix configPath)
(import ./hauk/compose.nix configPath)
(import ./immich/compose.nix configPath)
(import ./music/jbots/compose.nix configPath)
(import ./nextcloud/compose.nix configPath)
(import ./resume/compose.nix configPath)
(import ./vaultwarden/compose.nix configPath)
(import ./wg-easy/compose.nix configPath)
(import ./forgejo/compose.nix globalEnv)
(import ./freshrss/compose.nix globalEnv)
(import ./gameyfin/compose.nix globalEnv)
(import ./hauk/compose.nix globalEnv)
(import ./immich/compose.nix globalEnv)
(import ./music/jbots/compose.nix globalEnv)
(import ./nextcloud/compose.nix globalEnv)
(import ./resume/compose.nix globalEnv)
(import ./vaultwarden/compose.nix globalEnv)
(import ./wg-easy/compose.nix globalEnv)
(import ./media/bazarr/compose.nix configPath)
(import ./media/joal/compose.nix configPath)
(import ./media/jellystat/compose.nix configPath)
(import ./media/prowlarr/compose.nix configPath)
(import ./media/radarr/compose.nix configPath)
(import ./media/seerr/compose.nix configPath)
(import ./media/sonarr/compose.nix configPath)
(import ./media/bazarr/compose.nix globalEnv)
(import ./media/joal/compose.nix globalEnv)
(import ./media/jellystat/compose.nix globalEnv)
(import ./media/prowlarr/compose.nix globalEnv)
(import ./media/radarr/compose.nix globalEnv)
(import ./media/seerr/compose.nix globalEnv)
(import ./media/sonarr/compose.nix globalEnv)
];
services.borgbackup.configs.docker = {
paths = [configPath];
paths = [globalEnv.configPath];
};
}

View file

@ -1,11 +1,16 @@
rwDataDir: {
{
configPath,
mainUID,
mainGID,
...
}: {
config,
pkgs,
...
}: let
inherit (config.sops) secrets;
rwPath = rwDataDir + "/forgejo";
rwPath = configPath + "/forgejo";
in {
virtualisation.docker.compose."forgejo" = {
networks.proxy_net = {external = true;};
@ -29,9 +34,8 @@ in {
environment = {
APP_NAME = "Gitea";
# TODO: change ids
USER_UID = "1000";
USER_GID = "1000";
USER_UID = mainUID;
USER_GID = mainGID;
ROOT_URL = "https://git.nelim.org";
SSH_DOMAIN = "git.nelim.org";

View file

@ -1,11 +1,11 @@
rwDataDir: {
{configPath, ...}: {
config,
pkgs,
...
}: let
inherit (config.sops) secrets;
rwPath = rwDataDir + "/freshrss";
rwPath = configPath + "/freshrss";
in {
virtualisation.docker.compose."freshrss" = {
networks.proxy_net = {external = true;};

View file

@ -1,4 +1,8 @@
rwDataDir: {
{
mainUID,
mainGID,
...
}: {
config,
pkgs,
...
@ -11,7 +15,7 @@ in {
services."gameyfin" = {
image = pkgs.callPackage ./images/gameyfin.nix pkgs;
restart = "always";
user = "1000:1000";
user = "${mainUID}:${mainGID}";
env_file = [secrets.gameyfin.path];
environment.GAMEYFIN_USER = "mathis";

View file

@ -1,4 +1,4 @@
rwDataDir: {pkgs, ...}: {
{...}: {pkgs, ...}: {
virtualisation.docker.compose."hauk" = {
networks.proxy_net = {external = true;};

View file

@ -1,4 +1,4 @@
rwDataDir: {
{configPath, ...}: {
config,
lib,
pkgs,
@ -8,7 +8,7 @@ rwDataDir: {
inherit (config.sops) secrets;
rwPath = rwDataDir + "/immich";
rwPath = configPath + "/immich";
envFile = "${./env}";
UPLOAD_LOCATION = "${rwPath}/data";

View file

@ -1,5 +1,11 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/media/bazarr";
{
configPath,
mainUID,
mainGID,
TZ,
...
}: {pkgs, ...}: let
rwPath = configPath + "/media/bazarr";
in {
virtualisation.docker.compose."bazarr" = {
networks.proxy_net = {external = true;};
@ -9,9 +15,9 @@ in {
restart = "always";
environment = {
PUID = "1000";
PGID = "1000";
TZ = "America/New_York";
PUID = mainUID;
PGID = mainGID;
inherit TZ;
};
ports = [

View file

@ -1,11 +1,15 @@
rwDataDir: {
{
configPath,
TZ,
...
}: {
config,
pkgs,
...
}: let
inherit (config.sops) secrets;
rwPath = rwDataDir + "/jellystat";
rwPath = configPath + "/jellystat";
in {
virtualisation.docker.compose."jellystat" = {
networks.proxy_net = {external = true;};
@ -21,7 +25,7 @@ in {
POSTGRES_IP = "jellystat-db";
POSTGRES_PORT = 5432;
TZ = "America/New_York";
inherit TZ;
};
ports = ["3070:3000"];

View file

@ -1,5 +1,5 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/media/joal";
{configPath, ...}: {pkgs, ...}: let
rwPath = configPath + "/media/joal";
in {
virtualisation.docker.compose."joal" = {
networks.proxy_net = {external = true;};

View file

@ -1,5 +1,11 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/media/prowlarr";
{
configPath,
mainUID,
mainGID,
TZ,
...
}: {pkgs, ...}: let
rwPath = configPath + "/media/prowlarr";
in {
virtualisation.docker.compose."prowlarr" = {
networks.proxy_net = {external = true;};
@ -10,9 +16,9 @@ in {
restart = "always";
environment = {
PUID = "1000";
PGID = "1000";
TZ = "America/New_York";
PUID = mainUID;
PGID = mainGID;
inherit TZ;
};
volumes = ["${rwPath}/data:/config"];
@ -29,7 +35,7 @@ in {
LOG_LEVEL = "info";
LOG_HTML = "false";
CAPTCHA_SOLVER = "none";
TZ = "America/New_York";
inherit TZ;
# https://github.com/FlareSolverr/FlareSolverr/pull/1300#issuecomment-2379596654
DRIVER = "nodriver";

View file

@ -1,5 +1,11 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/media/radarr";
{
configPath,
mainUID,
mainGID,
TZ,
...
}: {pkgs, ...}: let
rwPath = configPath + "/media/radarr";
in {
virtualisation.docker.compose."radarr" = {
networks.proxy_net = {external = true;};
@ -11,9 +17,9 @@ in {
ports = ["7878:7878"];
environment = {
PUID = "1000";
PGID = "1000";
TZ = "America/New_York";
PUID = mainUID;
PGID = mainGID;
inherit TZ;
};
volumes = [

View file

@ -1,5 +1,9 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/media/seerr";
{
configPath,
TZ,
...
}: {pkgs, ...}: let
rwPath = configPath + "/media/seerr";
in {
virtualisation.docker.compose."seerr" = {
networks.proxy_net = {external = true;};
@ -10,7 +14,7 @@ in {
environment = {
LOG_LEVEL = "debug";
TZ = "America/New_York";
inherit TZ;
};
volumes = [

View file

@ -1,5 +1,11 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/media/sonarr";
{
configPath,
mainUID,
mainGID,
TZ,
...
}: {pkgs, ...}: let
rwPath = configPath + "/media/sonarr";
in {
virtualisation.docker.compose."sonarr" = {
networks.proxy_net = {external = true;};
@ -11,9 +17,9 @@ in {
ports = ["8989:8989"];
environment = {
PUID = "1000";
PGID = "1000";
TZ = "America/New_York";
PUID = mainUID;
PGID = mainGID;
inherit TZ;
};
volumes = [

View file

@ -1,11 +1,11 @@
rwDataDir: {
{configPath, ...}: {
pkgs,
self,
...
}: let
inherit (self.packages.${pkgs.system}) jmusicbot;
rwPath = rwDataDir + "/music/jbots";
rwPath = configPath + "/music/jbots";
image = pkgs.callPackage ./images/jmusicbot.nix {inherit pkgs jmusicbot;};
in {
virtualisation.docker.compose."jbots" = {

View file

@ -1,4 +1,4 @@
rwDataDir: {
{configPath, ...}: {
config,
pkgs,
...
@ -6,7 +6,7 @@ rwDataDir: {
inherit (config.sops) secrets;
mainContainerName = "app-server";
rwPath = rwDataDir + "/nextcloud";
rwPath = configPath + "/nextcloud";
in {
virtualisation.docker.compose."nextcloud" = {
networks.proxy_net = {external = true;};

View file

@ -1,11 +1,11 @@
rwDataDir: {
{configPath, ...}: {
config,
pkgs,
...
}: let
inherit (config.sops) secrets;
rwPath = rwDataDir + "/resume";
rwPath = configPath + "/resume";
in {
virtualisation.docker.compose."resume" = {
networks.proxy_net = {external = true;};

View file

@ -1,5 +1,5 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/vaultwarden";
{configPath, ...}: {pkgs, ...}: let
rwPath = configPath + "/vaultwarden";
in {
virtualisation.docker.compose."vaultwarden" = {
networks.proxy_net = {external = true;};

View file

@ -1,5 +1,5 @@
rwDataDir: {pkgs, ...}: let
rwPath = rwDataDir + "/wg-easy";
{configPath, ...}: {pkgs, ...}: let
rwPath = configPath + "/wg-easy";
in {
virtualisation.docker.compose."wg-easy" = {
networks.proxy_net = {external = true;};