mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 20:39:18 -08:00
125 lines
2.7 KiB
Nix
125 lines
2.7 KiB
Nix
{
|
|
config,
|
|
meta,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
inherit (lib.attrsets) mapAttrs mapAttrsToList;
|
|
inherit (lib.strings) removePrefix;
|
|
inherit (config.services) deluge plex tautulli ombi sonarr radarr bazarr lidarr readarr prowlarr cloudflared;
|
|
inherit (config) kyuuto;
|
|
plexLibrary = {
|
|
"/mnt/Anime".hostPath = kyuuto.libraryDir + "/anime";
|
|
"/mnt/Shows".hostPath = kyuuto.libraryDir + "/tv";
|
|
"/mnt/Movies".hostPath = kyuuto.libraryDir + "/movies";
|
|
"/mnt/Music".hostPath = kyuuto.libraryDir + "/music/assorted";
|
|
};
|
|
in {
|
|
imports = let
|
|
inherit (meta) nixos;
|
|
in [
|
|
nixos.reisen-ct
|
|
nixos.sops
|
|
nixos.nginx
|
|
nixos.access.plex
|
|
nixos.cloudflared
|
|
./cloudflared.nix
|
|
|
|
# media
|
|
nixos.kyuuto
|
|
nixos.plex
|
|
nixos.tautulli
|
|
nixos.ombi
|
|
nixos.deluge
|
|
nixos.mediatomb
|
|
nixos.invidious
|
|
|
|
# yarr harr fiddle dee dee >w<
|
|
nixos.radarr
|
|
nixos.sonarr
|
|
nixos.bazarr
|
|
nixos.lidarr
|
|
nixos.readarr
|
|
nixos.prowlarr
|
|
];
|
|
|
|
services.mediatomb = {
|
|
serverName = "tewi";
|
|
mediaDirectories = let
|
|
mkLibraryDir = dir: {
|
|
path = kyuuto.libraryDir + "/${dir}";
|
|
mountPoint = kyuuto.libraryDir;
|
|
};
|
|
libraryDir = {
|
|
path = kyuuto.libraryDir;
|
|
mountPoint = kyuuto.libraryDir;
|
|
subdirectories =
|
|
mapAttrsToList (
|
|
_: {hostPath, ...}:
|
|
removePrefix "${kyuuto.libraryDir}/" hostPath
|
|
)
|
|
plexLibrary
|
|
++ ["tlmc" "music-raw"];
|
|
};
|
|
in
|
|
[libraryDir] ++ map mkLibraryDir ["tlmc" "music-raw" "lewd"];
|
|
};
|
|
|
|
hardware.opengl = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [mesa.drivers];
|
|
};
|
|
|
|
fileSystems = let
|
|
bind = {
|
|
fsType = "none";
|
|
options = ["bind" "nofail"];
|
|
};
|
|
fsPlex = mapAttrs (_: {hostPath, ...}:
|
|
mkMerge [
|
|
bind
|
|
{
|
|
device = hostPath;
|
|
}
|
|
])
|
|
plexLibrary;
|
|
fsDeluge = {
|
|
"${deluge.downloadDir}" = mkIf deluge.enable (mkMerge [
|
|
bind
|
|
{
|
|
device = kyuuto.mountDir + "/downloads/deluge/download";
|
|
}
|
|
]);
|
|
};
|
|
in
|
|
mkMerge [
|
|
fsPlex
|
|
(mkIf deluge.enable fsDeluge)
|
|
];
|
|
|
|
systemd.services.deluged = mkIf deluge.enable {
|
|
unitConfig.RequiresMountsFor = [
|
|
"${deluge.downloadDir}"
|
|
];
|
|
};
|
|
systemd.services.plex = mkIf plex.enable {
|
|
unitConfig.RequiresMountsFor = mapAttrsToList (path: _: path) plexLibrary;
|
|
};
|
|
|
|
systemd.network.networks.eth0 = {
|
|
name = "eth0";
|
|
matchConfig = {
|
|
MACAddress = "BC:24:11:34:F4:A8";
|
|
Type = "ether";
|
|
};
|
|
address = ["10.1.1.44/24"];
|
|
gateway = ["10.1.1.1"];
|
|
DHCP = "no";
|
|
};
|
|
|
|
sops.defaultSopsFile = ./secrets.yaml;
|
|
|
|
system.stateVersion = "21.05";
|
|
}
|