infrastructure/nixos/kyuuto/mount.nix
2024-02-09 14:25:59 -08:00

62 lines
1.7 KiB
Nix

{
config,
lib,
...
}: let
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.modules) mkIf mkMerge;
cfg = config.kyuuto;
in {
options.kyuuto = with lib.types; {
setup = mkEnableOption "directory and permission setup";
mountDir = mkOption {
type = path;
default = "/mnt/kyuuto-media";
};
libraryDir = mkOption {
type = path;
default = cfg.mountDir + "/library";
};
transferDir = mkOption {
type = path;
default = cfg.mountDir + "/transfer";
};
};
config = {
systemd.tmpfiles.rules = mkIf cfg.setup [
"d ${cfg.transferDir} 3775 root kyuuto"
"d ${cfg.libraryDir} 3775 root kyuuto"
"d ${cfg.libraryDir}/unsorted 3775 root kyuuto"
"d ${cfg.libraryDir}/music 7775 sonarr kyuuto"
"d ${cfg.libraryDir}/anime 7775 sonarr kyuuto"
"d ${cfg.libraryDir}/tv 7775 sonarr kyuuto"
"d ${cfg.libraryDir}/movies 7775 radarr kyuuto"
];
users = let
mapId = id: if config.proxmoxLXC.privileged or true then 100000 + id else id;
mkDummyUsers = {
name,
group ? name,
enable ? !config.services.${serviceName}.enable, serviceName ? name,
uid ? config.ids.uids.${name},
gid ? config.ids.gids.${group},
}: mkIf enable {
users.${name} = {
group = mkIf (group != null) group;
uid = mapId uid;
isSystemUser = true;
};
groups.${group} = {
gid = mapId gid;
};
};
in mkMerge [
(mkDummyUsers { name = "deluge"; })
(mkDummyUsers { name = "radarr"; })
(mkDummyUsers { name = "sonarr"; })
(mkDummyUsers { name = "lidarr"; })
];
};
}