From 8348e7c7a6ace7aebe0df423cca0bf3182cb6e3f Mon Sep 17 00:00:00 2001 From: blake Date: Mon, 6 Oct 2025 12:12:59 -0500 Subject: [PATCH] adding jellyfin --- hosts/snowbelle/configuration.nix | 3 ++ modules/homelab/default.nix | 1 + modules/homelab/services/.template.nix | 21 ++++++++++ modules/homelab/services/default.nix | 9 ++-- modules/homelab/services/jellyfin/default.nix | 41 +++++++++++++++++++ 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 modules/homelab/services/.template.nix create mode 100644 modules/homelab/services/jellyfin/default.nix diff --git a/hosts/snowbelle/configuration.nix b/hosts/snowbelle/configuration.nix index 95100c9..6c74265 100644 --- a/hosts/snowbelle/configuration.nix +++ b/hosts/snowbelle/configuration.nix @@ -24,6 +24,9 @@ smb.enable = true; nfs.enable = true; }; + services = { + jellyfin.enable = true; + }; }; # enable users diff --git a/modules/homelab/default.nix b/modules/homelab/default.nix index 16c4b2e..71f9bf8 100644 --- a/modules/homelab/default.nix +++ b/modules/homelab/default.nix @@ -5,6 +5,7 @@ ./zfs.nix ./smb.nix ./nfs.nix + ./services/default.nix ]; modules.homelab.zfs.enable = lib.mkDefault false; diff --git a/modules/homelab/services/.template.nix b/modules/homelab/services/.template.nix new file mode 100644 index 0000000..49423f5 --- /dev/null +++ b/modules/homelab/services/.template.nix @@ -0,0 +1,21 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.modules.services.; +in +{ + options.modules.system.docker = { + enable = lib.mkEnableOption "enables "; +# extra options +# mode = lib.mkOption { +# type = lib.types.enum [ "server" "client" ]; +# default = "client"; +# description = "whether syncthing should run as a client (user) or server (system-wide)."; +# }; + + }; + + config = lib.mkIf cfg.enable { + + }; +} diff --git a/modules/homelab/services/default.nix b/modules/homelab/services/default.nix index c17f1df..cb7beda 100644 --- a/modules/homelab/services/default.nix +++ b/modules/homelab/services/default.nix @@ -2,10 +2,13 @@ { pkgs, config, lib, ... }: { -# not yet -# imports = [ -# ]; + + imports = [ + ./jellyfin/default.nix + + ]; + modules.services.jellyfin.enable = lib.mkDefault false; } diff --git a/modules/homelab/services/jellyfin/default.nix b/modules/homelab/services/jellyfin/default.nix new file mode 100644 index 0000000..3a67510 --- /dev/null +++ b/modules/homelab/services/jellyfin/default.nix @@ -0,0 +1,41 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.modules.services.jellyfin; +in +{ + options.modules.system.docker = { + enable = lib.mkEnableOption "enables jellyfin"; +# extra options +# mode = lib.mkOption { +# type = lib.types.enum [ "server" "client" ]; +# default = "client"; +# description = "whether syncthing should run as a client (user) or server (system-wide)."; +# }; + + }; + + config = lib.mkIf cfg.enable { + + # declare jellyfin group + users.groups.jellyfin = { gid = 701; }; + # declare jellyfin user + users.users.jellyfin = { + description = "jellyfin media server user"; + uid = 701; + isSystemUser = true; + home = "/var/lib/jellyfin"; + createHome = true; + group = "jellyfin"; + extraGroups = [ "media" "video" "render" ]; + }; + + services.jellyfin = { + enable = true; + openFirewall = true; # Opens 8096/8920 automatically + user = "jellyfin"; # Default: jellyfin + group = "jellyfin"; # Default: jellyfin + dataDir = "/var/lib/jellyfin"; # Config + metadata storage + }; + }; +}