{ pkgs, inputs, ... }: let unstable = import inputs.unstable { system = pkgs.system; }; in { nixpkgs.config.packageOverrides = pkgs: { vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; }; hardware.graphics = { enable = true; extraPackages = with pkgs; [ intel-media-driver intel-vaapi-driver vaapiVdpau intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in) vpl-gpu-rt # QSV on 11th gen or newer intel-media-sdk # QSV up to 11th gen ]; }; nixpkgs.config.permittedInsecurePackages = [ "dotnet-sdk-6.0.428" "aspnetcore-runtime-6.0.36" ]; users.users."starr" = { isSystemUser = true; group = "starr"; extraGroups = [ "jellyfin" ]; }; users.users.sonarr.extraGroups = [ "jellyfin" "radarr" "transmission" "starr" ]; users.users.radarr.extraGroups = [ "jellyfin" "sonarr" "transmission" "starr" ]; users.users.bazarr.extraGroups = [ "jellyfin" "sonarr" "transmission" "starr" "radarr" ]; users.users.lidarr.extraGroups = [ "jellyfin" "starr" "transmission" ]; users.users.whisparr.extraGroups = [ "jellyfin" "starr" "transmission" ]; users.users.shobu.extraGroups = [ "jellyfin" "starr" "transmission" "radarr" "sonarr" ]; users.groups = { starr = { }; }; services = { jellyfin = { enable = true; openFirewall = true; }; sonarr = { enable = true; openFirewall = true; group = "starr"; settings = { authentication.AuthenticationMethod = "external"; }; }; radarr = { enable = true; openFirewall = true; group = "starr"; }; prowlarr = { enable = true; openFirewall = true; }; bazarr = { enable = true; openFirewall = true; }; lidarr = { enable = true; openFirewall = true; }; whisparr = { enable = true; openFirewall = true; }; jellyseerr = { enable = true; openFirewall = true; }; }; environment.systemPackages = [ pkgs.jellyfin pkgs.jellyfin-web pkgs.jellyfin-ffmpeg ]; }