100 lines
3.0 KiB
Nix
Raw Permalink Normal View History

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, ... }:
{
# home.file.".kodi/userdata/mediasources.xml".source = ./files/mediasources.xml;
2025-01-21 23:07:05 -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
})
]
);
}