jellyfin: added jellyfin server config

This commit is contained in:
Tigor Hutasuhut 2024-06-17 23:28:22 +07:00
parent 714cdcea1c
commit 0ef9a409f0
6 changed files with 35 additions and 4 deletions

View file

@ -13,5 +13,6 @@ in
syncthing.enable = mkEnableOption "syncthing";
openvpn.enable = mkEnableOption "openvpn";
stubby.enable = mkEnableOption "stubby";
jellyfin.enable = mkEnableOption "jellyfin";
};
}

View file

@ -44,6 +44,7 @@
syncthing.enable = true;
openvpn.enable = true;
stubby.enable = true;
jellyfin.enable = true;
};
};
}

View file

@ -3,7 +3,7 @@ let
name = "pihole";
podman = config.profile.podman;
pihole = podman.pihole;
inherit (lib) mkIf lists;
inherit (lib) mkIf strings attrsets;
gateway = "10.1.1.1";
subnet = "10.1.1.0/30";
ip = "10.1.1.2";
@ -36,8 +36,11 @@ in
};
# We have refresh the custom.list dns list when caddy virtual hosts changes,
# the easiest way to do so is to restart the pihole container
systemd.services."podman-${name}".partOf = lists.optional (config.services.caddy.enable) "caddy.service";
# the easiest way to do so is to restart the pihole container.
#
# This works by collecting all the virtual hosts defined in caddy
# and check if the length of the list changes, if it does, we restart the pihole container.
systemd.services."podman-${name}".restartTriggers = attrsets.mapAttrsToList (name: _: name) config.services.caddy.virtualHosts;
environment.etc."pihole/custom.list" = {
# Copy file instead of symlink
mode = "0444";

View file

@ -32,7 +32,7 @@ in
system.activationScripts."podman-${name}" = ''
mkdir -p ${volume}
chown -R ${uid}:${gid} /nas/mediaserver
chown -R ${uid}:${gid} ${volume}
'';
environment.etc."podman/${name}/ytdlp.json" = {

View file

@ -10,5 +10,6 @@
./kavita.nix
./openvpn.nix
./stubby.nix
./jellyfin.nix
];
}

View file

@ -0,0 +1,25 @@
{ config, lib, ... }:
let
cfg = config.profile.services.jellyfin;
dataDir = "/nas/mediaserver/jellyfin";
domain = "jellyfin.tigor.web.id";
inherit (lib) mkIf;
username = config.profile.user.name;
in
{
config = mkIf cfg.enable {
users.users.${username}.extraGroups = [ "jellyfin" ];
users.users.jellyfin.extraGroups = [ username ];
system.activationScripts.jellyfin-prepare = ''
mkdir -p ${dataDir}
chmod -R 0777 /nas/mediaserver
'';
services.caddy.virtualHosts.${domain}.extraConfig = ''
reverse_proxy 0.0.0.0:8096
'';
services.jellyfin = {
enable = true;
inherit dataDir;
};
};
}