feat: refactor the modules/servers directory.
This commit is contained in:
parent
4e783c052b
commit
8b754d3a7e
69 changed files with 61 additions and 62 deletions
15
modules/servers/per-server/bragi/default.nix
Normal file
15
modules/servers/per-server/bragi/default.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{...}: let
|
||||
servicesDir = ./services;
|
||||
serviceFiles =
|
||||
builtins.filter
|
||||
(name: builtins.match "^.*\\.nix$" name != null)
|
||||
(builtins.attrNames (builtins.readDir servicesDir));
|
||||
hostModules = map (fn: import "${servicesDir}/${fn}") serviceFiles;
|
||||
in {
|
||||
imports =
|
||||
[
|
||||
../../common
|
||||
./secrets.nix
|
||||
]
|
||||
++ hostModules;
|
||||
}
|
||||
12
modules/servers/per-server/bragi/secrets.nix
Normal file
12
modules/servers/per-server/bragi/secrets.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
age = {
|
||||
secrets = {
|
||||
rclone = {
|
||||
file = ../../../../secrets/rclone.age;
|
||||
};
|
||||
navidrome = {
|
||||
file = ../../../../secrets/navidrome.age;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
32
modules/servers/per-server/bragi/services/audiobookshelf.nix
Normal file
32
modules/servers/per-server/bragi/services/audiobookshelf.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{...}: {
|
||||
services.audiobookshelf = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
systemd.services.audiobookshelf = {
|
||||
after = ["mnt.mount"];
|
||||
bindsTo = ["mnt.mount"];
|
||||
};
|
||||
|
||||
services.traefik.dynamicConfigOptions.http = {
|
||||
services.audiobookshelf.loadBalancer.servers = [
|
||||
{
|
||||
url = "http://localhost:8000";
|
||||
}
|
||||
];
|
||||
|
||||
routers.audiobookshelf = {
|
||||
rule = "Host(`abs.cronyakatsuki.xyz`)";
|
||||
tls = {
|
||||
certResolver = "porkbun";
|
||||
};
|
||||
service = "audiobookshelf";
|
||||
entrypoints = "websecure";
|
||||
};
|
||||
};
|
||||
|
||||
services.restic.backups = {
|
||||
local.paths = ["/var/lib/audiobookshelf"];
|
||||
server.paths = ["/var/lib/audiobookshelf"];
|
||||
};
|
||||
}
|
||||
37
modules/servers/per-server/bragi/services/navidrome.nix
Normal file
37
modules/servers/per-server/bragi/services/navidrome.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{config, ...}: {
|
||||
services.navidrome = {
|
||||
enable = true;
|
||||
settings = {
|
||||
MusicFolder = "/mnt/music";
|
||||
BaseUrl = "https://nd.cronyakatsuki.xyz";
|
||||
};
|
||||
environmentFile = "${config.age.secrets.navidrome.path}";
|
||||
};
|
||||
|
||||
systemd.services.navidrome = {
|
||||
after = ["mnt.mount"];
|
||||
bindsTo = ["mnt.mount"];
|
||||
};
|
||||
|
||||
services.traefik.dynamicConfigOptions.http = {
|
||||
services.navidrome.loadBalancer.servers = [
|
||||
{
|
||||
url = "http://localhost:4533";
|
||||
}
|
||||
];
|
||||
|
||||
routers.navidrome = {
|
||||
rule = "Host(`nd.cronyakatsuki.xyz`)";
|
||||
tls = {
|
||||
certResolver = "porkbun";
|
||||
};
|
||||
service = "navidrome";
|
||||
entrypoints = "websecure";
|
||||
};
|
||||
};
|
||||
|
||||
services.restic.backups = {
|
||||
local.paths = ["/var/lib/navidrome"];
|
||||
server.paths = ["/var/lib/navidrome"];
|
||||
};
|
||||
}
|
||||
19
modules/servers/per-server/bragi/services/storage-box.nix
Normal file
19
modules/servers/per-server/bragi/services/storage-box.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = [pkgs.rclone];
|
||||
|
||||
fileSystems."/mnt" = {
|
||||
device = "storage:";
|
||||
fsType = "rclone";
|
||||
options = [
|
||||
"nodev"
|
||||
"nofail"
|
||||
"allow_other"
|
||||
"args2env"
|
||||
"config=${config.age.secrets.rclone.path}"
|
||||
];
|
||||
};
|
||||
}
|
||||
9
modules/servers/per-server/bragi/services/umurmur.nix
Normal file
9
modules/servers/per-server/bragi/services/umurmur.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{...}: {
|
||||
services.umurmur = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
settings = {
|
||||
welcometext = "Welcome to crony's nutsack.";
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue