Kodi: Difference between revisions
imported>Nix m add Software/Applications subcategory |
added gbm variant |
||
(6 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
Kodi (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub that can be installed on Linux, OSX, Windows, iOS and Android, featuring a 10-foot user interface for use with televisions and remote controls. | [https://kodi.tv Kodi] (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub that can be installed on Linux, OSX, Windows, iOS and Android, featuring a 10-foot user interface for use with televisions and remote controls. | ||
== Basic module usage == | == Basic module usage == | ||
The NixOS module for | The NixOS module for Kodi sets Kodi up as a desktop session. | ||
With this configuration | With this configuration Kodi will run automatically on boot: | ||
< | <syntaxhighlight lang="nix"> | ||
{ | { | ||
services.xserver.enable = true; | services.xserver.enable = true; | ||
Line 12: | Line 12: | ||
services.xserver.displayManager.autoLogin.enable = true; | services.xserver.displayManager.autoLogin.enable = true; | ||
services.xserver.displayManager.autoLogin.user = "kodi"; | services.xserver.displayManager.autoLogin.user = "kodi"; | ||
services.xserver.displayManager.lightdm.greeter.enable = false; | |||
# Define a user account | # Define a user account | ||
users.extraUsers.kodi.isNormalUser = true; | users.extraUsers.kodi.isNormalUser = true; | ||
} | } | ||
</ | </syntaxhighlight> | ||
== Access from other machines == | == Access from other machines == | ||
For this to work | For this to work Kodi's remote interface must be enabled in the Kodi configuration. | ||
Kodi uses by default udp/tcp port 8080, which must be allowed in the firewall: | Kodi uses by default udp/tcp port 8080, which must be allowed in the firewall: | ||
Line 32: | Line 34: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
== With | == Autostart kodi-gbm, with HDMI audio passthrough == | ||
From ArchWiki: currently the most feature rich. It is the only one of the three options (x11, wayland, gbm) able to display HDR content, may be a good choice for standalone operations since it runs directly on the GPU without the need for the added X11 layer. A complete list of features lacking compared to other back-ends can be found in Kodi issue 14876. | |||
<syntaxHighlight lang=nix> | |||
{ pkgs, ... }: | |||
{ | |||
# use alsa; which supports hdmi passthrough | |||
services.pulseaudio.enable = false; | |||
services.pipewire.enable = false; | |||
environment.systemPackages = with pkgs; [ | |||
kodi-gbm | |||
]; | |||
users.users = { | |||
kodi = { | |||
initialHashedPassword = "passwordHash"; | |||
extraGroups = [ | |||
# allow kodi access to keyboards | |||
"input" | |||
]; | |||
isNormalUser = true; | |||
}; | |||
}; | |||
# auto-login and launch kodi | |||
services.getty.autologinUser = "kodi"; | |||
services.greetd = { | |||
enable = true; | |||
settings = { | |||
initial_session = { | |||
command = "${pkgs.kodi-gbm}/bin/kodi-standalone"; | |||
user = "kodi"; | |||
}; | |||
default_session = { | |||
command = "${pkgs.greetd.greetd}/bin/agreety --cmd sway"; | |||
}; | |||
}; | |||
}; | |||
programs.sway = { | |||
enable = true; | |||
xwayland.enable = false; | |||
}; | |||
} | |||
</syntaxHighlight> | |||
== With Wayland == | |||
Especially on less-powerful ARM boards the wayland variant is faster. | Especially on less-powerful ARM boards the wayland variant is faster. | ||
In this example cage, kiosk compositor for Wayland, will run | In this example cage, kiosk compositor for Wayland, will run Kodi as its only application: | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
Line 59: | Line 111: | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
environment.systemPackages = [ | environment.systemPackages = [ | ||
(pkgs.kodi | (pkgs.kodi.withPackages (kodiPkgs: with kodiPkgs; [ | ||
jellyfin | jellyfin | ||
])) | |||
]; | |||
</syntaxHighlight> | |||
Or if using as the startup desktop service: | |||
<syntaxHighlight lang=nix> | |||
services.xserver.desktopManager.kodi.package = | |||
pkgs.kodi.withPackages (pkgs: with pkgs; [ | |||
jellycon | |||
])) | ])) | ||
]; | ]; | ||
Line 66: | Line 128: | ||
[[Category:Applications]] | [[Category:Applications]] | ||
[[Category:Server]] |
Latest revision as of 21:21, 18 September 2025
Kodi (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub that can be installed on Linux, OSX, Windows, iOS and Android, featuring a 10-foot user interface for use with televisions and remote controls.
Basic module usage
The NixOS module for Kodi sets Kodi up as a desktop session. With this configuration Kodi will run automatically on boot:
{
services.xserver.enable = true;
services.xserver.desktopManager.kodi.enable = true;
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "kodi";
services.xserver.displayManager.lightdm.greeter.enable = false;
# Define a user account
users.extraUsers.kodi.isNormalUser = true;
}
Access from other machines
For this to work Kodi's remote interface must be enabled in the Kodi configuration. Kodi uses by default udp/tcp port 8080, which must be allowed in the firewall:
{
networking.firewall = {
allowedTCPPorts = [ 8080 ];
allowedUDPPorts = [ 8080 ];
};
}
Autostart kodi-gbm, with HDMI audio passthrough
From ArchWiki: currently the most feature rich. It is the only one of the three options (x11, wayland, gbm) able to display HDR content, may be a good choice for standalone operations since it runs directly on the GPU without the need for the added X11 layer. A complete list of features lacking compared to other back-ends can be found in Kodi issue 14876.
{ pkgs, ... }:
{
# use alsa; which supports hdmi passthrough
services.pulseaudio.enable = false;
services.pipewire.enable = false;
environment.systemPackages = with pkgs; [
kodi-gbm
];
users.users = {
kodi = {
initialHashedPassword = "passwordHash";
extraGroups = [
# allow kodi access to keyboards
"input"
];
isNormalUser = true;
};
};
# auto-login and launch kodi
services.getty.autologinUser = "kodi";
services.greetd = {
enable = true;
settings = {
initial_session = {
command = "${pkgs.kodi-gbm}/bin/kodi-standalone";
user = "kodi";
};
default_session = {
command = "${pkgs.greetd.greetd}/bin/agreety --cmd sway";
};
};
};
programs.sway = {
enable = true;
xwayland.enable = false;
};
}
With Wayland
Especially on less-powerful ARM boards the wayland variant is faster. In this example cage, kiosk compositor for Wayland, will run Kodi as its only application:
{ pkgs, ... }: {
# Define a user account
users.extraUsers.kodi.isNormalUser = true;
services.cage.user = "kodi";
services.cage.program = "${pkgs.kodi-wayland}/bin/kodi-standalone";
services.cage.enable = true;
}
Plugins
There are two different ways to install plugins. You can either set the relevant option (search pkgs/top-level/all-packages.nix for "wrapKodi" for a list) through NixOS or home-manager:
nixpkgs.config.kodi.enableAdvancedLauncher = true;
or override Kodi to include the plugins (see pkgs/applications/video/kodi/plugins.nix for a list or search in the kodiPlugins namespace):
environment.systemPackages = [
(pkgs.kodi.withPackages (kodiPkgs: with kodiPkgs; [
jellyfin
]))
];
Or if using as the startup desktop service:
services.xserver.desktopManager.kodi.package =
pkgs.kodi.withPackages (pkgs: with pkgs; [
jellycon
]))
];