{ config, lib, pkgs, ... }: with lib; let cfg = config.roles.kodi; in { options.roles.kodi = { enable = mkEnableOption "Enable Kodi"; autologin = mkOption { default = false; }; wayland = mkOption { default = true; }; }; config = let kodiBasePkg = if cfg.wayland then pkgs.kodi-wayland else pkgs.kodi; kodiPkg = kodiBasePkg.withPackages (pkgs: with pkgs; [ jellyfin steam-launcher steam-library youtube ]); in mkIf cfg.enable { users.extraUsers.kodi.isNormalUser = true; networking.firewall = { allowedTCPPorts = [ 8080 ]; allowedUDPPorts = [ 8080 ]; }; environment.systemPackages = with pkgs; [ kodiPkg wget ]; services = if cfg.autologin then { displayManager = { autoLogin.enable = true; autoLogin.user = "kodi"; defaultSession = "kodi"; sessionData.autologinSession = "plasma"; }; } else {}; }; }