diff --git a/system/hosts/ooksdesk/default.nix b/system/hosts/ooksdesk/default.nix index 0d36320..485bce7 100644 --- a/system/hosts/ooksdesk/default.nix +++ b/system/hosts/ooksdesk/default.nix @@ -6,7 +6,7 @@ ../../profiles ]; - activeProfiles = ["base" "nvidia"]; + activeProfiles = ["base" "nvidia" "mediaServer"]; systemModules.user = { ooks.enable = true; @@ -15,7 +15,7 @@ networking = { hostName = "ooksdesk"; - useDHCP = true; + # useDHCP = true; }; boot = { kernelPackages = pkgs.linuxKernel.packages.linux_zen; diff --git a/system/modules/default.nix b/system/modules/default.nix index 27bb1a2..f4823d8 100644 --- a/system/modules/default.nix +++ b/system/modules/default.nix @@ -13,6 +13,7 @@ ./virtualisation.nix ./pipewire.nix ./security.nix + ./services ]; diff --git a/system/modules/services/default.nix b/system/modules/services/default.nix new file mode 100644 index 0000000..fdaa819 --- /dev/null +++ b/system/modules/services/default.nix @@ -0,0 +1,14 @@ +{ lib, ... }: + +{ + imports = [ + ./jellyfin + ]; + + options.systemModules.services = { + jellyfin = { + enable = lib.mkEnableOption "Enable jellyfin service module"; + }; + }; + +} diff --git a/system/modules/services/jellyfin/default.nix b/system/modules/services/jellyfin/default.nix new file mode 100644 index 0000000..92c3dc9 --- /dev/null +++ b/system/modules/services/jellyfin/default.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.systemModules.services.jellyfin; +in + +{ + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + jellyfin + jellyfin-web + jellyfin-ffmpeg + ]; + services.jellyfin = { + user = "jellyfin"; + group = "media"; + enable = true; + openFirewall = true; + }; + users.users.jellyfin = { + isSystemUser = true; + group = "media"; + }; + users.groups.media = {}; + + fileSystems."/media" = { + device = "/dev/disk/by-label/ooksmedia"; + fsType = "ntfs"; + options = [ "rw" "uid=1000" "gid=991" "umask=002" ]; + }; + }; +} diff --git a/system/modules/user/ooks.nix b/system/modules/user/ooks.nix index 1aca7b8..352bc3b 100644 --- a/system/modules/user/ooks.nix +++ b/system/modules/user/ooks.nix @@ -15,6 +15,7 @@ in "audio" ] ++ ifTheyExist [ "git" + "media" "network" "libvirtd" "deluge" diff --git a/system/profiles/default.nix b/system/profiles/default.nix index 49631c3..a38f82b 100644 --- a/system/profiles/default.nix +++ b/system/profiles/default.nix @@ -12,6 +12,7 @@ in ./nvidia ./gaming ./laptop + ./mediaServer ]; options = { @@ -33,6 +34,9 @@ in nvidia = { enable = lib.mkEnableOption "Enable the nvidia profile"; }; + mediaServer = { + enable = lib.mkEnableOption "Enable the mediaServer profile"; + }; }; }; diff --git a/system/profiles/mediaServer/default.nix b/system/profiles/mediaServer/default.nix new file mode 100644 index 0000000..9bae110 --- /dev/null +++ b/system/profiles/mediaServer/default.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: +let + cfg = config.systemProfile.mediaServer; +in +{ + imports = [ + ../../modules + ]; + + config = lib.mkIf cfg.enable { + systemModules = { + services = { + jellyfin.enable = true; + }; + }; + }; +}