nixfiles/hosts/raspberry-pi5/profiles/kodi.nix
2024-09-04 14:25:08 +01:00

73 lines
1.8 KiB
Nix

{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
]);
kodi-gamescope = pkgs.writeShellScriptBin "kodi-gamescope" ''
gamescope --expose-wayland --enable-hdr -- ${kodiPackage}/bin/kodi $@
'';
kodiSessionFile =
(pkgs.writeTextDir "share/wayland-sessions/kodi.desktop" ''
[Desktop Entry]
Name=Kodi
Comment=Kodi
Exec=${kodi-gamescope}/bin/kodi-gamescope
Type=Application
'')
.overrideAttrs (_: {passthru.providedSessions = ["kodi"];});
in {
environment.systemPackages = [
kodiPackage
kodi-gamescope
];
services.displayManager.sessionPackages = [kodiSessionFile];
security.wrappers.gamescope = {
owner = "root";
group = "root";
source = "${pkgs.gamescope}/bin/gamescope";
capabilities = "cap_sys_nice+pie";
};
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";
};
};
}