2025-01-20 19:40:54 -05:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
|
|
|
|
{
|
|
|
|
imports = [ ];
|
|
|
|
|
|
|
|
options.me = {
|
2025-01-20 20:06:33 -05:00
|
|
|
kodi.enable = lib.mkOption {
|
2025-01-20 19:40:54 -05:00
|
|
|
type = lib.types.bool;
|
|
|
|
default = false;
|
|
|
|
example = true;
|
|
|
|
description = "Whether we want to install kodi.";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2025-01-20 20:06:33 -05:00
|
|
|
config = lib.mkIf config.me.kodi.enable (
|
2025-01-20 19:40:54 -05:00
|
|
|
lib.mkMerge [
|
|
|
|
{
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
];
|
|
|
|
}
|
|
|
|
(lib.mkIf config.me.graphical {
|
2025-01-20 20:06:33 -05:00
|
|
|
services.cage.user = "kodi";
|
|
|
|
services.cage.program = "${pkgs.kodi-wayland}/bin/kodi-standalone";
|
|
|
|
services.cage.enable = true;
|
2025-01-20 22:38:54 -05:00
|
|
|
|
2025-01-21 22:19:28 -05:00
|
|
|
nixpkgs.overlays = [
|
|
|
|
(final: prev: {
|
|
|
|
kodi-wayland = prev.kodi-wayland.withPackages (
|
|
|
|
kodiPkgs: with kodiPkgs; [
|
|
|
|
joystick
|
|
|
|
vfs-sftp
|
|
|
|
]
|
|
|
|
);
|
|
|
|
})
|
|
|
|
];
|
2025-01-20 22:38:54 -05:00
|
|
|
|
|
|
|
users.users.kodi = {
|
|
|
|
isNormalUser = true;
|
|
|
|
createHome = true; # https://github.com/NixOS/nixpkgs/issues/6481
|
|
|
|
group = "kodi";
|
|
|
|
extraGroups = [ ];
|
|
|
|
uid = 12000;
|
|
|
|
packages = with pkgs; [
|
|
|
|
tree
|
|
|
|
];
|
|
|
|
# Generate with `mkpasswd -m scrypt`
|
|
|
|
hashedPassword = "$7$CU..../....VXvNQ8za3wSGpdzGXNT50/$HcFtn/yvwPMCw4888BelpiAPLAxe/zU87fD.d/N6U48";
|
|
|
|
openssh.authorizedKeys.keys = [
|
|
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGu+k5lrirokdW5zVdRVBOqEOAvAPlIkG/MdJNc9g5ky"
|
|
|
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEI6mu6I5Jp+Ib0vJxapGHbEShZjyvzV8jz5DnzDrI39AAAABHNzaDo="
|
|
|
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIAFNcSXwvy+brYTOGo56G93Ptuq2MmZsjvRWAfMqbmMLAAAABHNzaDo="
|
|
|
|
];
|
|
|
|
};
|
|
|
|
users.groups.kodi.gid = 12000;
|
|
|
|
|
|
|
|
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
|
|
|
hideMounts = true;
|
|
|
|
users.kodi = {
|
|
|
|
directories = [
|
|
|
|
{
|
|
|
|
directory = ".ssh";
|
|
|
|
user = "kodi";
|
|
|
|
group = "kodi";
|
|
|
|
mode = "0755";
|
|
|
|
}
|
2025-01-21 21:23:21 -05:00
|
|
|
{
|
|
|
|
directory = ".kodi";
|
|
|
|
user = "kodi";
|
|
|
|
group = "kodi";
|
|
|
|
mode = "0755";
|
|
|
|
}
|
2025-01-20 22:38:54 -05:00
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
2025-01-21 23:07:05 -05:00
|
|
|
|
|
|
|
home-manager.users.kodi =
|
|
|
|
{ pkgs, ... }:
|
|
|
|
{
|
2025-01-22 20:12:50 -05:00
|
|
|
# home.file.".kodi/userdata/mediasources.xml".source = ./files/mediasources.xml;
|
2025-01-21 23:07:05 -05:00
|
|
|
|
2025-01-22 20:12:50 -05:00
|
|
|
# home.file.".kodi/userdata/addon_data/peripheral.joystick/resources/buttonmaps/xml/linux/DualSense_Wireless_Controller_13b_8a.xml".source =
|
|
|
|
# ./files/DualSense_Wireless_Controller_13b_8a.xml;
|
|
|
|
|
|
|
|
# TODO: Maybe .kodi/userdata/sources.xml
|
|
|
|
# TODO: ./userdata/guisettings.xml:303: <setting id="filecache.memorysize">128</setting>
|
2025-01-21 23:07:05 -05:00
|
|
|
|
|
|
|
# The state version is required and should stay at the version you
|
|
|
|
# originally installed.
|
|
|
|
home.stateVersion = "24.11";
|
|
|
|
};
|
2025-01-20 19:40:54 -05:00
|
|
|
})
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|