{pkgs, ...}: let kodiPackage = pkgs.kodi-wayland.withPackages (kodiPkgs: with kodiPkgs; [ pvr-iptvsimple inputstreamhelper (inputstream-adaptive.overrideAttrs (oldAttrs: { extraInstallPhase = let n = "inputstream.adaptive"; in '' ln -s $out/lib/addons/${n}/libssd_wv.so $out/${addonDir}/${n}/libssd_wv.so ln -s $out/lib/addons/${n}/libcdm_aarch64_loader.so $out/${addonDir}/${n}/libcdm_aarch64_loader.so ''; })) inputstream-rtmp visualization-projectm visualization-waveform visualization-matrix visualization-starburst visualization-spectrum ]); in { environment.systemPackages = [ kodiPackage ]; services.xserver = { enable = true; desktopManager.kodi = { enable = true; package = kodiPackage; }; 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"; }; }; }