nix-config/nixos/viridian/services/opengist/default.nix
jasmine f4067e3697
chore(viridian): update all Docker services to latest pinned releases
Update all container images to their latest stable releases with pinned
version tags (not "latest" tag for reproducibility).

Multimedia services:
- Jellyfin: 10.10.5 → 10.11.5
- Lidarr: 2.9.6.4552 → 3.1.0.4875
- Prowlarr: 1.30.2.4939 → 2.3.0.5236
- qBittorrent: 5.0.3 → 5.1.4
- Radarr: 5.18.4.9674 → 6.0.4.10291
- Sonarr: 4.0.13.2932 → 4.0.16.2944

Services:
- OpenGist: 1.10 → 1.11.1
2025-12-23 13:03:41 +08:00

61 lines
1.5 KiB
Nix

{config, ...}: let
hostname = config.networking.hostName;
port = "6157";
in {
# OpenGist service configuration
virtualisation.oci-containers.containers = {
opengist = {
image = "ghcr.io/thomiceli/opengist:1.11.1";
ports = [
"${port}:${port}"
];
volumes = [
"/srv/opengist:/opengist"
];
# Environment variables for OpenGist
environment = {
PUID = "1000";
PGID = "100";
# Custom OpenGist configuration
OG_CUSTOM_LOGO = "pikachu.png";
OG_CUSTOM_FAVICON = "pokeball.png";
OG_CUSTOM_NAME = "PokeGist";
# Disable SSH Git support
OG_SSH_GIT_ENABLED = "false";
};
};
};
# Traefik configuration
services.traefik.dynamicConfigOptions.http = {
# OpenGist Router
routers.opengist = {
rule = "Host(`ps7e.xyz`)";
entryPoints = [
"websecure"
];
service = "opengist";
};
# OpenGist Service
services.opengist = {
loadBalancer.servers = [
{url = "http://127.0.0.1:${port}";}
];
};
};
# Activation script to create symlinks for custom assets
system.activationScripts.opengist-symlink = ''
cp ${toString ./assets/pikachu.png} /srv/opengist/custom/pikachu.png
cp ${toString ./assets/pokeball.png} /srv/opengist/custom/pokeball.png
'';
fileSystems."/srv/opengist" = {
device = "/dev/disk/by-label/${hostname}";
fsType = "btrfs";
options = [
"subvol=srv-opengist"
"compress=zstd"
];
};
}