test: setting up nas structure

This commit is contained in:
Nick 2025-12-09 00:52:21 -06:00
parent 4225970826
commit a92229390e
36 changed files with 275 additions and 1039 deletions

View file

@ -6,7 +6,7 @@ let
inherit (flake.config.people) user0;
inherit (flake.config.people.users.${user0}) email;
inherit (flake.config.services) instances;
service = instances.acme;
serviceCfg = instances.acme;
dns0 = instances.web.dns.provider0;
dns1 = instances.web.dns.provider1;
in
@ -29,7 +29,7 @@ in
"pass"
];
sopsPath = secret: dns: {
path = "/var/lib/secrets/${instances.acme.name}/${dns}-${secret}";
path = "/var/lib/secrets/${serviceCfg.name}/${dns}-${secret}";
owner = "root";
mode = "600";
};
@ -50,7 +50,7 @@ in
systemd = {
tmpfiles.rules = [
"Z ${service.sops.path0} 755 ${service.name} ${service.name} -"
"Z ${serviceCfg.secretPaths.path0} 755 ${serviceCfg.name} ${serviceCfg.name} -"
];
};
}

View file

@ -1,7 +1,7 @@
{ flake, ... }:
let
inherit (flake.config.services) instances;
service = instances.caddy;
serviceCfg = instances.caddy;
importList =
let
@ -26,8 +26,8 @@ in
networking = {
firewall = {
allowedTCPPorts = [
service.ports.port0 # 80
service.ports.port1 # 443
serviceCfg.ports.port0 # 80
serviceCfg.ports.port1 # 443
];
};
};

View file

@ -6,12 +6,15 @@
...
}:
let
inherit (labHelpers) guestPath;
inherit (import ./config { inherit config flake pkgs; }) fireflyVM;
inherit (flake.config.people) user0;
inherit (flake.config.people.users.${user0}) email;
inherit (flake.config.services.instances) firefly-iii;
interface0Cfg = firefly-iii.interfaces.interface0;
in
{
fireflyNick = fireflyVM {
user = user0;
ip = interface0Cfg.microvm.ip;
@ -19,7 +22,7 @@ let
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh0;
host = interface0Cfg.domain;
mnt = "";
mnt = guestPath user0;
owner = email.address2;
};
@ -44,7 +47,4 @@ let
# host = "";
# owner = "";
# };
in
fireflyNick
# // fireflyStacie // fireflyGarnet
}

View file

@ -5,21 +5,21 @@
...
}:
let
inherit (labHelpers) mntPath;
inherit (import ./config { inherit flake pkgs; }) forgejoVM;
inherit (flake.config.people) user0;
inherit (flake.config.services) instances;
interface0Cfg = instances.forgejo.interfaces.interface0;
in
{
forgejoNick = forgejoVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = mntPath;
host = interface0Cfg.domain;
};
in
forgejoNick
# // forgejoStacie // forgejoGarnet
}

View file

@ -1,5 +1,6 @@
{
labHelpers = {
mntPath = "/mnt/storage";
guestPath = user: "/mnt/storage/users/${user}/guests";
docsPath = user: "/mnt/storage/users/${user}/home/docs";
mediaPath = user: "/mnt/storage/users/${user}/home/media";

View file

@ -5,21 +5,22 @@
...
}:
let
inherit (labHelpers) mntPath;
inherit (import ./config { inherit flake pkgs; }) jellyfinVM;
inherit (flake.config.people) user0;
inherit (flake.config.services) instances;
interface0Cfg = instances.jellyfin.interfaces.interface0;
in
{
jellyfinNick = jellyfinVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = mntPath;
host = interface0Cfg.domain;
};
in
jellyfinNick
# // forgejoStacie // forgejoGarnet
}

View file

@ -5,21 +5,22 @@
...
}:
let
inherit (labHelpers) mntPath;
inherit (import ./config { inherit flake pkgs; }) mastodonVM;
inherit (flake.config.people) user0;
inherit (flake.config.services) instances;
interface0Cfg = instances.mastodon.interfaces.interface0;
in
{
mastodonNick = mastodonVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = mntPath;
host = interface0Cfg.domain;
};
in
mastodonNick
# // mastodonStacie // mastodonGarnet
}

View file

@ -5,10 +5,13 @@
...
}:
let
inherit (labHelpers) mntPath;
inherit (import ./config { inherit flake pkgs; }) minecraftVM;
inherit (flake.config.services) instances;
inherit (flake.config.people) user0;
in
{
minecraftNick01 =
let
interfaceCfg = instances.minecraft.interfaces.interface0;
@ -20,7 +23,7 @@ let
userMac = interfaceCfg.microvm.macUser;
ssh = interfaceCfg.microvm.ssh;
port = interfaceCfg.microvm.port;
mnt = "";
mnt = mntPath;
worldNumber = "01";
config = {
allow-flight = false;
@ -67,7 +70,7 @@ let
userMac = interfaceCfg.microvm.macUser;
ssh = interfaceCfg.microvm.ssh;
port = interfaceCfg.microvm.port;
mnt = "";
mnt = mntPath;
worldNumber = "02";
config = {
allow-flight = false;
@ -101,5 +104,4 @@ let
};
};
in
minecraftNick01 // minecraftNick02
}

View file

@ -5,22 +5,36 @@
...
}:
let
inherit (labHelpers) mntPath guestPath;
inherit (import ./config { inherit flake pkgs; }) opencloudVM;
inherit (flake.config.people) user0;
inherit (flake.config.services.instances) opencloud;
interface0Cfg = opencloud.interfaces.interface0;
interface1Cfg = opencloud.interfaces.interface1;
in
{
opencloudNick = opencloudVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = guestPath user0;
host = interface0Cfg.domain;
};
opencloudProject = opencloudVM {
user = user0;
ip = interface1Cfg.microvm.ip;
mac = interface1Cfg.microvm.mac;
userMac = interface1Cfg.microvm.macUser;
ssh = interface1Cfg.microvm.ssh;
mnt = mntPath;
host = "${interface0Cfg.subdomain}.${flake.inputs.linkpage.secrets.domains.projectsite}";
};
# opencloudStacie = opencloudVM {
# user = "stacie";
# ip = ipAddress id1;
@ -40,7 +54,4 @@ let
# mnt = guestPath "garnet";
# host = "";
# };
in
opencloudNick
# // opencloudStacie // opencloudGarnet
}

View file

@ -38,7 +38,6 @@ in
passwordFile = "/run/secrets/${user}-pass";
storagePath = "/var/lib/${serviceCfg.name}";
originalsPath = "/var/lib/${serviceCfg.name}-media";
importPath = "photos";
address = "0.0.0.0";
};
openssh = {

View file

@ -5,19 +5,22 @@
...
}:
let
inherit (labHelpers) guestPath mediaPath;
inherit (import ./config { inherit flake lib; }) photoprismVM;
inherit (flake.config.services.instances) photoprism;
inherit (flake.config.people) user0;
interface0Cfg = photoprism.interfaces.interface0;
in
{
photoprismNick = photoprismVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
data = "";
mnt = guestPath user0;
data = mediaPath user0;
host = interface0Cfg.domain;
};
@ -41,6 +44,4 @@ let
# data = mediaPath "stacie";
# };
in
photoprismNick
# // photoprismStacie // photoprismGarnet
}

View file

@ -5,19 +5,22 @@
...
}:
let
inherit (labHelpers) mntPath;
inherit (import ./config { inherit flake pkgs; }) qbittorrentVM;
inherit (flake.config.people) user0;
inherit (flake.config.services) instances;
interface0Cfg = instances.qbittorrent.interfaces.interface0;
qbittorrentNick = qbittorrentVM {
in
{
qbittorrentCeres = qbittorrentVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = mntPath;
host = interface0Cfg.domain;
port = 51820;
endpoint = "185.111.110.1";
@ -25,6 +28,4 @@ let
dns = [ "10.2.0.1" ];
key = "QPfiwJQmt5VLEOh1ufLbi1lj6LUnwQY0tgDSh3pWx1k=";
};
in
qbittorrentNick
# // qbittorrentStacie // qbittorrentGarnet
}

View file

@ -4,6 +4,12 @@
...
}:
let
inherit (labHelpers)
docsPath
guestPath
mediaPath
miscPath
;
inherit (import ./config { inherit flake; }) syncthingVM;
inherit (flake.config.services) instances;
inherit (flake.config.people) user0;
@ -52,19 +58,19 @@ let
{
mountPoint = "/var/lib/${serviceCfg.name}/docs";
proto = "virtiofs";
source = "";
source = docsPath user;
tag = "${serviceCfg.name}_${user}_docs";
}
{
mountPoint = "/var/lib/${serviceCfg.name}/media";
proto = "virtiofs";
source = "";
source = mediaPath user;
tag = "${serviceCfg.name}_${user}_media";
}
{
mountPoint = "/var/lib/${serviceCfg.name}/misc";
proto = "virtiofs";
source = "";
source = miscPath user;
tag = "${serviceCfg.name}_${user}_misc";
}
];
@ -75,6 +81,8 @@ let
"d /var/lib/${serviceCfg.name}/misc 0755 ${serviceCfg.name} ${serviceCfg.name} -"
];
in
{
syncthingNick =
let
phoneID = "OALKHLZ-OODUWVX-PAC2LI7-UMZMSZO-FELLRCD-RS4DHJS-PVA5YQK-WTFXXQI";
@ -85,7 +93,7 @@ let
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = guestPath user0;
host = interface0Cfg.domain;
folders = foldersHelper user0;
devices = devicesHelper user0 phoneID "Phone" "192.168.50.8";
@ -112,7 +120,4 @@ let
# syncID = "";
# deviceIP = "";
# };
in
syncthingNick
# // syncthingStacie // syncthingGarnet
}

View file

@ -4,19 +4,22 @@
...
}:
let
inherit (labHelpers) guestPath;
inherit (import ./config { inherit flake; }) vaultwardenVM;
inherit (flake.config.people) user0;
inherit (flake.config.services.instances) vaultwarden;
interface0Cfg = vaultwarden.interfaces.interface0;
in
{
vaultwardenNick = vaultwardenVM {
user = user0;
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = "";
mnt = guestPath user0;
host = interface0Cfg.domain;
};
@ -40,6 +43,4 @@ let
# host = "";
# };
in
vaultwardenNick
# // vaultwardenStacie // vaultwardenGarnet
}

View file

@ -8,7 +8,9 @@ let
inherit (import ./config { inherit flake pkgs; }) websiteVM;
inherit (flake.config.services) instances;
websiteNick =
in
{
websiteUpRoot =
let
websitePkg = flake.self.packages.${pkgs.system}.website;
interfaceCfg = instances.website.interfaces.interface0;
@ -34,5 +36,4 @@ let
package = websitePkg;
};
in
websiteNick // websiteProject
}

View file

@ -9,7 +9,9 @@ let
inherit (flake.config.services) instances;
interfaceCfg = instances.zookeeper.interfaces.interface0;
zookeeperNick =
in
{
zookeeperBot =
let
appPackage = flake.self.packages.${pkgs.system}.zookeeper;
in
@ -21,5 +23,4 @@ let
package = appPackage;
};
in
zookeeperNick
}

View file

@ -24,20 +24,18 @@ in
};
paths =
let
inst = instance: instances.${instance}.mntPaths.path0;
inst = instance: interface: instances.${instance}.interfaces.${interface}.paths.mntPaths.path0;
in
[
"/home/${user0}/.ssh"
(inst "firefly-iii")
(inst "forgejo")
(inst "mastodon")
(inst "opencloud1")
(inst "minecraft0")
(inst "minecraft1")
(inst "vaultwarden")
((inst "jellyfin") + "/cache")
((inst "jellyfin") + "/data")
((inst "jellyfin") + "/media/music")
(inst "forgejo" "interface0")
(inst "mastodon" "interface0")
(inst "opencloud" "interface1")
(inst "minecraft" "interface0")
(inst "minecraft" "interface1")
((inst "jellyfin" "interface0") + "/cache")
((inst "jellyfin" "interface0") + "/data")
((inst "jellyfin" "interface0") + "/media/music")
];
};
};