2024-02-23 01:56:51 +02:00
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}: let
|
|
|
|
settings = import ./settings.nix {};
|
|
|
|
backend = config.virtualisation.oci-containers.backend;
|
|
|
|
in {
|
|
|
|
system.activationScripts = {
|
|
|
|
docker-network-setup =
|
|
|
|
if backend == "docker"
|
|
|
|
then ''
|
|
|
|
${lib.getExe pkgs.docker} network inspect authentik || ${lib.getExe pkgs.docker} network create authentik
|
|
|
|
${lib.getExe pkgs.docker} network inspect authentik-internal || ${lib.getExe pkgs.docker} network create authentik-internal
|
|
|
|
${lib.getExe pkgs.docker} network inspect ${settings.firefish_docker_network} || ${lib.getExe pkgs.docker} network create ${settings.firefish_docker_network}
|
|
|
|
''
|
|
|
|
else "";
|
|
|
|
};
|
|
|
|
|
|
|
|
virtualisation.oci-containers = {
|
|
|
|
backend = "docker";
|
|
|
|
containers = {
|
|
|
|
drasl = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "unmojang/drasl";
|
|
|
|
ports = [
|
|
|
|
"${toString settings.ports.drasl}:25585"
|
|
|
|
];
|
|
|
|
volumes = [
|
|
|
|
"${settings.server_configs}/drasl/config:/etc/drasl"
|
|
|
|
"${settings.server_configs}/drasl/data:/var/lib/drasl"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
firefish = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "registry.joinfirefish.org/firefish/firefish";
|
|
|
|
ports = [
|
|
|
|
"${toString settings.ports.firefish}:3000"
|
|
|
|
];
|
|
|
|
volumes = [
|
|
|
|
"${settings.server_configs}/firefish/files:/firefish/files"
|
|
|
|
"${settings.server_configs}/firefish/config:/firefish/.config:ro"
|
|
|
|
];
|
|
|
|
environment = {
|
|
|
|
NODE_ENV = "production";
|
|
|
|
};
|
|
|
|
extraOptions = [
|
|
|
|
"--network=${settings.firefish_docker_network}"
|
|
|
|
];
|
|
|
|
dependsOn = [
|
|
|
|
"firefish-redis"
|
|
|
|
"firefish-db"
|
|
|
|
"firefish-meilisearch"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
firefish-redis = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "docker.io/redis:7.0-alpine";
|
|
|
|
volumes = [
|
2024-03-11 12:06:27 +02:00
|
|
|
# TODO: move to proper location
|
2024-02-23 01:56:51 +02:00
|
|
|
"/home/owo/firefish/redis:/data"
|
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
"--network=${settings.firefish_docker_network}"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
firefish-db = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "docker.io/postgres:15-alpine";
|
|
|
|
environment = {
|
|
|
|
POSTGRES_USER = "firefish";
|
|
|
|
POSTGRES_DB = "firefish";
|
|
|
|
};
|
2024-03-22 13:08:54 +02:00
|
|
|
|
2024-02-23 01:56:51 +02:00
|
|
|
volumes = [
|
2024-03-11 12:06:27 +02:00
|
|
|
# TODO: move to proper location
|
2024-02-23 01:56:51 +02:00
|
|
|
"/home/owo/firefish/db:/var/lib/postgresql/data"
|
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
"--network=${settings.firefish_docker_network}"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
firefish-meilisearch = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "getmeili/meilisearch:v1.1.1";
|
|
|
|
volumes = [
|
|
|
|
"${settings.server_configs}/firefish/meili_data:/meili_data"
|
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
"--network=${settings.firefish_docker_network}"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
plextraktsync = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "ghcr.io/taxel/plextraktsync";
|
2024-03-05 21:21:27 +02:00
|
|
|
cmd = ["watch"];
|
2024-02-23 01:56:51 +02:00
|
|
|
environment = {
|
2024-03-05 21:21:27 +02:00
|
|
|
PUID = "1000";
|
|
|
|
PGID = "1000";
|
|
|
|
TZ = "Europe/Tallinn";
|
2024-02-23 01:56:51 +02:00
|
|
|
};
|
|
|
|
volumes = [
|
|
|
|
"${settings.server_configs}/plextraktsync:/app/config"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
cross-seed = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "crossseed/cross-seed";
|
|
|
|
volumes = [
|
|
|
|
"${settings.server_configs}/cross-seed/config:/config"
|
|
|
|
"${settings.server_configs}/cross-seed/cross-seed:/cross-seeds"
|
|
|
|
"/home/owo/.local/share/qBittorrent/BT_backup:/torrents"
|
|
|
|
];
|
|
|
|
cmd = [
|
|
|
|
"daemon"
|
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
"--network=host"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
watchtower = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "containrrr/watchtower:latest-dev";
|
|
|
|
volumes = [
|
|
|
|
"/var/run/docker.sock:/var/run/docker.sock"
|
|
|
|
"/home/owo/.docker/config.json:/config.json"
|
|
|
|
];
|
|
|
|
environment = {
|
2024-03-22 13:08:54 +02:00
|
|
|
WATCHTOWER_NOTIFICATIONS = "shoutrrr";
|
2024-02-23 01:56:51 +02:00
|
|
|
};
|
|
|
|
cmd = [
|
|
|
|
"--interval=30"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
archivebox = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "archivebox/archivebox:master";
|
|
|
|
cmd = [
|
|
|
|
"server"
|
|
|
|
"0.0.0.0:8000"
|
|
|
|
];
|
|
|
|
ports = [
|
|
|
|
"${toString settings.ports.archivebox}:8000"
|
|
|
|
];
|
|
|
|
environment = {
|
2024-03-05 21:21:27 +02:00
|
|
|
ALLOWED_HOSTS = "*";
|
|
|
|
MEDIA_MAX_SIZE = "750m";
|
2024-02-23 01:56:51 +02:00
|
|
|
};
|
|
|
|
volumes = [
|
|
|
|
"${settings.server_configs}/archivebox/data:/data"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
wakapi = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "ghcr.io/muety/wakapi:latest";
|
|
|
|
environment = {
|
2024-03-22 13:43:52 +02:00
|
|
|
WAKAPI_PUBLIC_URL = "https://waka.catnip.ee";
|
2024-02-23 01:56:51 +02:00
|
|
|
WAKAPI_MAIL_SENDER = "Wakapi <wakapi@catnip.ee>";
|
2024-03-22 13:08:54 +02:00
|
|
|
WAKAPI_MAIL_SMTP_HOST = "mx1.sly.ee";
|
2024-02-23 01:56:51 +02:00
|
|
|
WAKAPI_MAIL_SMTP_PORT = "465";
|
|
|
|
WAKAPI_MAIL_SMTP_USER = "wakapi@catnip.ee";
|
|
|
|
WAKAPI_MAIL_SMTP_TLS = "true";
|
|
|
|
};
|
|
|
|
environmentFiles = [
|
|
|
|
"/etc/secrets/wakapi.env"
|
|
|
|
];
|
|
|
|
ports = [
|
|
|
|
"${toString settings.ports.wakapi}:3000"
|
|
|
|
];
|
|
|
|
volumes = [
|
2024-03-22 13:45:50 +02:00
|
|
|
"${settings.server_configs_home}/wakapi:/data"
|
2024-02-23 01:56:51 +02:00
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
#"--pull=always"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
|
|
|
jellyfin-vue = {
|
|
|
|
autoStart = true;
|
|
|
|
image = "jellyfin/jellyfin-vue:unstable";
|
|
|
|
ports = [
|
|
|
|
"${toString settings.ports.jellyfin_vue}:80"
|
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
#"--pull=always"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|