{ pkgs, ... }: let user = "kodi"; kodi-standalone = pkgs.kodi-wayland.withPackages (kodiPkgs: with pkgs.kodiPackages; [ youtube pvr-iptvsimple keymap inputstream-adaptive inputstream-ffmpegdirect requests-cache inputstreamhelper advanced-emulator-launcher jellyfin ]); in { services.cage = { inherit user; enable = true; program = "${kodi-standalone}/bin/kodi-standalone"; }; users.users.kodi = { name = user; isNormalUser = true; extraGroups = [ "audio" "video" "disk" "plugdev" "i2c" "spi" "power" ]; }; sops.secrets = { "kodi-advancedsettings" = { owner = user; format = "binary"; sopsFile = ./secrets/advancedsettings.xml; path = "/home/${user}/.kodi/userdata/advancedsettings.xml"; }; "kodi-passwords" = { owner = user; format = "binary"; sopsFile = ./secrets/passwords.xml; path = "/home/${user}/.kodi/userdata/passwords.xml"; }; "kodi-youtube" = { owner = user; format = "binary"; sopsFile = ./secrets/youtube.json; path = "/home/${user}/.kodi/userdata/addon_data/plugin.video.youtube/api_keys.json"; }; }; networking.firewall.allowedTCPPorts = [ 8080 9090 ]; environment.sessionVariables = { WLR_LIBINPUT_NO_DEVICES = builtins.toString 1; }; environment.systemPackages = with pkgs; [ #kodi-standalone alsa-utils (retroarch.override { cores = with libretro; [ snes9x pcsx-rearmed nestopia ]; }) ]; }