{pkgs, ...}: let kodiPackage = pkgs.kodi-wayland.withPackages (kodiPkgs: with kodiPkgs; [ pvr-iptvsimple inputstreamhelper inputstream-adaptive inputstream-rtmp visualization-projectm visualization-waveform visualization-matrix visualization-starburst visualization-spectrum ]); kodiSessionFile = (pkgs.writeTextDir "share/wayland-sessions/kodi.desktop" '' [Desktop Entry] Name=Kodi Comment=Kodi Exec=${kodiPackage}/bin/kodi --windowing=gbm Type=Application '') .overrideAttrs (_: {passthru.providedSessions = ["kodi"];}); in { environment.systemPackages = [ kodiPackage ]; services.displayManager.sessionPackages = [kodiSessionFile]; services.xserver = { enable = true; extraConfig = '' Section "OutputClass" Identifier "vc4" MatchDriver "vc4" Driver "modesetting" Option "PrimaryGPU" "true" EndSection ''; }; networking.firewall = { allowedTCPPorts = [8080]; allowedUDPPorts = [8080]; }; home-manager.users.chaos = let widevine = pkgs.widevine-aarch64-4k; in { home.file.widevine-lib = { source = "${widevine}/share/google/chrome/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so"; target = ".kodi/cdm/libwidevinecdm.so"; }; home.file.widevine-manifest = { source = "${widevine}/share/google/chrome/WidevineCdm/manifest.json"; target = ".kodi/cdm/manifest.json"; }; }; }