1
1
Fork 0

kodi: separate desktop from program

This commit is contained in:
Myned 2025-04-06 02:11:00 -05:00
parent 887c7813d1
commit 0a5126f435
Signed by: myned
GPG key ID: C7224454F7881A34
2 changed files with 73 additions and 44 deletions
options/custom
desktops/kodi
programs

View file

@ -1,7 +1,6 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
@ -9,14 +8,13 @@ with lib; let
in {
options.custom.desktops.kodi = {
enable = mkOption {default = false;};
firewall = mkOption {default = false;};
};
config = mkIf cfg.enable {
# https://github.com/xbmc/xbmc
# https://kodi.wiki/view/Main_Page
# https://wiki.archlinux.org/title/Kodi
# https://wiki.nixos.org/wiki/Kodi
custom = {
programs.kodi.enable = true;
};
services = {
displayManager.autoLogin = {
enable = true;
@ -29,50 +27,13 @@ in {
desktopManager.kodi = {
enable = true;
# https://wiki.nixos.org/wiki/Kodi#Plugins
package = pkgs.unstable.kodi-gbm.withPackages (kodiPackages:
with kodiPackages; [
youtube # https://github.com/anxdpanic/plugin.video.youtube
]);
package = config.custom.programs.kodi.package;
};
};
};
# https://kodi.wiki/view/Smartphone/tablet_remotes#Firewall
# https://wiki.nixos.org/wiki/Kodi#Access_from_other_machines
networking.firewall = mkIf cfg.firewall {
allowedTCPPorts = [8080];
allowedUDPPorts = [9777];
};
users.users.kodi = {
isNormalUser = true;
};
home-manager.users.kodi = {
programs = {
home-manager.enable = true;
kodi = {
enable = true;
package = config.services.xserver.desktopManager.kodi.package;
# advancedsettings.xml
# https://kodi.wiki/view/Advancedsettings.xml
settings = {
# guisettings.xml
# https://kodi.wiki/view/Advancedsettings.xml#guisettings.xml_Setting_Conversion
# https://github.com/xbmc/xbmc/blob/master/system/settings/settings.xml
# https://kodi.wiki/view/Webserver
services = {
webserver = "true";
webserverauthentication = "false";
};
};
};
};
};
};
}

View file

@ -0,0 +1,68 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.custom.programs.kodi;
in {
options.custom.programs.kodi = {
enable = mkEnableOption "kodi";
firewall = mkOption {default = false;};
package = mkOption {
default =
pkgs.kodi-gbm.withPackages (kodiPackages:
forEach cfg.plugins (plugin: kodiPackages.${plugin}));
type = types.package;
};
# https://wiki.nixos.org/wiki/Kodi#Plugins
plugins = mkOption {
default = [
"youtube" # https://github.com/anxdpanic/plugin.video.youtube
];
type = with types; listOf str;
};
};
config = mkIf cfg.enable {
# https://kodi.wiki/view/Smartphone/tablet_remotes#Firewall
# https://wiki.nixos.org/wiki/Kodi#Access_from_other_machines
networking.firewall = mkIf cfg.firewall {
allowedTCPPorts = [8080];
allowedUDPPorts = [9777];
};
home-manager.sharedModules = [
{
# https://github.com/xbmc/xbmc
# https://kodi.wiki/view/Main_Page
# https://wiki.archlinux.org/title/Kodi
# https://wiki.nixos.org/wiki/Kodi
programs.kodi = {
enable = true;
package = cfg.package;
# advancedsettings.xml
# https://kodi.wiki/view/Advancedsettings.xml
settings = {
# guisettings.xml
# https://kodi.wiki/view/Advancedsettings.xml#guisettings.xml_Setting_Conversion
# https://github.com/xbmc/xbmc/blob/master/system/settings/settings.xml
# https://kodi.wiki/view/Webserver
services = {
webserver = "true";
webserverauthentication = "false";
webserverport = "8888";
};
};
};
}
];
};
}