{ config, pkgs, lib, ... }: # let # jellyfinPort = 8096; # jellyfinUserId = config.users.users.nix-apps.uid; # jellyfinGroupId = config.users.groups.jallen-nas.gid; # package = pkgs.jellyfin; # in { # containers.jellyfin = { # autoStart = true; # privateNetwork = true; # hostAddress = "10.0.1.18"; # localAddress = "10.0.2.25"; # config = { config, pkgs, lib, ... }: { # # Enable jellyfin service # nixpkgs.config.allowUnfree = true; # hardware = { # # Nvidia # nvidia = { # package = config.boot.kernelPackages.nvidiaPackages.latest; # # Modesetting is required. # modesetting.enable = true; # # Nvidia power management. Experimental, and can cause sleep/suspend to fail. # powerManagement.enable = true; # # Fine-grained power management. Turns off GPU when not in use. # # Experimental and only works on modern Nvidia GPUs (Turing or newer). # powerManagement.finegrained = false; # # Use the NVidia open source kernel module (not to be confused with the # # independent third-party "nouveau" open source driver). # # Support is limited to the Turing and later architectures. Full list of # # supported GPUs is at: # # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # # Only available from driver 515.43.04+ # # Currently alpha-quality/buggy, so false is currently the recommended setting. # open = true; # # Enable the Nvidia settings menu, # # accessible via `nvidia-settings`. # nvidiaSettings = true; # }; # # Enable graphics # graphics = { # enable = true; # enable32Bit = true; # }; # }; # # Services configs # services.xserver = { # # Load nvidia driver for Xorg and Wayland # videoDrivers = [ "nvidia" ]; # }; # services.jellyfin = { # enable = true; # openFirewall = true; # user = "jellyfin"; # group = "media"; # dataDir = "/data"; # configDir = "/config"; # # cacheDir = "/cache"; # }; # # Create required users and groups # users.users.jellyfin = { # isSystemUser = true; # uid = lib.mkForce jellyfinUserId; # group = "media"; # extraGroups = [ "downloads" ]; # }; # users.groups = { # media = { gid = lib.mkForce jellyfinGroupId; }; # downloads = { }; # }; # networking = { # firewall = { # enable = true; # allowedTCPPorts = [ jellyfinPort ]; # }; # # Use systemd-resolved inside the container # # Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686 # useHostResolvConf = lib.mkForce false; # }; # # System packages # environment.systemPackages = with pkgs; [ # sqlite # mono # mediainfo # # ffmpeg # # nvidiaPackages.gpu # # nvidiaPackages.nvidia-settings # # nvidiaPackages.nvidia-x11 # ]; # services.resolved.enable = true; # system.stateVersion = "23.11"; # }; # # Bind mount directories from host # bindMounts = { # "/data" = { # hostPath = "/media/nas/ssd/nix-app-data/jellyfin"; # isReadOnly = false; # }; # "/tv" = { # hostPath = "/media/nas/main/tv"; # isReadOnly = false; # }; # "/movies" = { # hostPath = "/media/nas/main/movies"; # isReadOnly = false; # }; # "/dev/nvidia0" = { hostPath = "/dev/nvidia0"; }; # GPU device # "/dev/nvidiactl" = { hostPath = "/dev/nvidiactl"; }; # NVIDIA control # "/dev/nvidia-modeset" = { hostPath = "/dev/nvidia-modeset"; }; # modesetting # }; # # allowedDevices = [ # # { # # modifier = "rw"; # # node = "/dev/nvidia0"; # # } # # { # # modifier = "rw"; # # node = "/dev/nvidiactl"; # # } # # { # # modifier = "rw"; # # node = "/dev/nvidia-modeset"; # # } # # { # # modifier = "rw"; # # node = "/dev/nvidia-uvm"; # # } # # { # # modifier = "rw"; # # node = "/dev/nvidia-uvm-tools"; # # } # # ]; # }; # networking.nat = { # forwardPorts = [{ # destination = "10.0.2.25:8096"; # sourcePort = jellyfinPort; # }]; # }; # } { services.jellyfin = { enable = true; openFirewall = true; user = "nix-apps"; group = "jallen-nas"; dataDir = "/media/nas/ssd/nix-app-data/jellyfin"; # cacheDir = "/cache"; }; }