chore: cleaned up some stuff

This commit is contained in:
Nick 2025-12-13 20:35:53 -06:00
parent 09926277fd
commit 77dcbe3c33
12 changed files with 104 additions and 168 deletions

View file

@ -11,15 +11,15 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.people.users.${user0}) email; inherit (flake.config.people.users.${user0}) email;
inherit (flake.config.services.instances) firefly-iii; inherit (flake.config.services.instances) firefly-iii;
interface0Cfg = firefly-iii.interfaces.interface0; interfaceCfg = firefly-iii.interfaces.interface0;
fireflyNick = fireflyVM { fireflyNick = fireflyVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
host = interface0Cfg.domain; host = interfaceCfg.domain;
owner = email.address2; owner = email.address2;
mnt = guestPath user0; mnt = guestPath user0;
}; };

View file

@ -10,16 +10,16 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
interface0Cfg = instances.forgejo.interfaces.interface0; interfaceCfg = instances.forgejo.interfaces.interface0;
forgejoNick = forgejoVM { forgejoNick = forgejoVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = mntPath; mnt = mntPath;
host = interface0Cfg.domain; host = interfaceCfg.domain;
}; };
in in
forgejoNick forgejoNick

View file

@ -10,16 +10,16 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
interface0Cfg = instances.jellyfin.interfaces.interface0; interfaceCfg = instances.jellyfin.interfaces.interface0;
jellyfinCeres = jellyfinVM { jellyfinCeres = jellyfinVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = mntPath; mnt = mntPath;
host = interface0Cfg.domain; host = interfaceCfg.domain;
}; };
in in

View file

@ -22,16 +22,16 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
interface0Cfg = instances.mastodon.interfaces.interface0; interfaceCfg = instances.mastodon.interfaces.interface0;
mastodonNick = mastodonVM { mastodonNick = mastodonVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = mntPath; mnt = mntPath;
host = interface0Cfg.domain; host = interfaceCfg.domain;
}; };
in in
mastodonNick mastodonNick

View file

@ -10,17 +10,17 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services.instances) opencloud; inherit (flake.config.services.instances) opencloud;
interface0Cfg = opencloud.interfaces.interface1; interfaceCfg = opencloud.interfaces.interface1;
opencloudProject = opencloudVM { opencloudProject = opencloudVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = mntPath; mnt = mntPath;
inter = "enp0s6"; inter = "enp0s6";
host = "${interface0Cfg.subdomain}.${flake.inputs.linkpage.secrets.domains.projectsite}"; host = "${interfaceCfg.subdomain}.${flake.inputs.linkpage.secrets.domains.projectsite}";
}; };
in in
opencloudProject opencloudProject

View file

@ -10,17 +10,17 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services.instances) opencloud; inherit (flake.config.services.instances) opencloud;
interface0Cfg = opencloud.interfaces.interface0; interfaceCfg = opencloud.interfaces.interface0;
opencloudNick = opencloudVM { opencloudNick = opencloudVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = guestPath user0; mnt = guestPath user0;
inter = "enp0s6"; inter = "enp0s6";
host = interface0Cfg.domain; host = interfaceCfg.domain;
}; };
in in
opencloudNick opencloudNick

View file

@ -10,17 +10,17 @@ let
inherit (import ../config { inherit flake lib; }) photoprismVM; inherit (import ../config { inherit flake lib; }) photoprismVM;
inherit (flake.config.services.instances) photoprism; inherit (flake.config.services.instances) photoprism;
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
interface0Cfg = photoprism.interfaces.interface0; interfaceCfg = photoprism.interfaces.interface0;
photoprismNick = photoprismVM { photoprismNick = photoprismVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = guestPath user0; mnt = guestPath user0;
data = mediaPath user0; data = mediaPath user0;
host = interface0Cfg.domain; host = interfaceCfg.domain;
}; };
in in
photoprismNick photoprismNick

View file

@ -11,16 +11,16 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
interface0Cfg = instances.qbittorrent.interfaces.interface0; interfaceCfg = instances.qbittorrent.interfaces.interface0;
qbittorrentCeres = qbittorrentVM { qbittorrentCeres = qbittorrentVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = mntPath; mnt = mntPath;
host = interface0Cfg.domain; host = interfaceCfg.domain;
port = 51820; port = 51820;
endpoint = "185.111.110.1"; endpoint = "185.111.110.1";
address = [ "10.2.0.2/32" ]; address = [ "10.2.0.2/32" ];

View file

@ -5,6 +5,8 @@
let let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services.instances) syncthing; inherit (flake.config.services.instances) syncthing;
inherit (import ../../../../helpers.nix { inherit flake; }) labHelpers;
inherit (labHelpers) mediaPath docsPath miscPath;
serviceCfg = syncthing; serviceCfg = syncthing;
in in
{ {
@ -17,10 +19,6 @@ in
userMac, userMac,
ssh, ssh,
mnt, mnt,
folders,
devices,
tmp,
mounts,
}: }:
{ {
microvm.vms = { microvm.vms = {
@ -39,15 +37,11 @@ in
openDefaultPorts = true; openDefaultPorts = true;
systemService = true; systemService = true;
guiAddress = "0.0.0.0:${toString serviceCfg.ports.port0}"; guiAddress = "0.0.0.0:${toString serviceCfg.ports.port0}";
# guiPasswordFile = "/run/secrets/${user}-pass";
settings = { settings = {
gui = { gui = {
user = user; user = user;
password = pass; password = pass;
}; };
folders = folders;
devices = devices;
options = { options = {
urAccepted = -1; urAccepted = -1;
}; };
@ -97,8 +91,10 @@ in
tmpfiles.rules = [ tmpfiles.rules = [
"d /var/lib/${serviceCfg.name} 0755 ${serviceCfg.name} ${serviceCfg.name} -" "d /var/lib/${serviceCfg.name} 0755 ${serviceCfg.name} ${serviceCfg.name} -"
] "d /var/lib/${serviceCfg.name}/docs 0755 ${serviceCfg.name} ${serviceCfg.name} -"
++ tmp; "d /var/lib/${serviceCfg.name}/media 0755 ${serviceCfg.name} ${serviceCfg.name} -"
"d /var/lib/${serviceCfg.name}/misc 0755 ${serviceCfg.name} ${serviceCfg.name} -"
];
}; };
microvm = { microvm = {
vcpu = 1; vcpu = 1;
@ -136,14 +132,32 @@ in
source = "${mnt}/${serviceCfg.name}"; source = "${mnt}/${serviceCfg.name}";
tag = "${serviceCfg.name}_${user}_data"; tag = "${serviceCfg.name}_${user}_data";
} }
{
mountPoint = "/var/lib/${serviceCfg.name}/docs";
proto = "virtiofs";
source = docsPath user;
tag = "${serviceCfg.name}_${user}_docs";
}
{
mountPoint = "/var/lib/${serviceCfg.name}/media";
proto = "virtiofs";
source = mediaPath user;
tag = "${serviceCfg.name}_${user}_media";
}
{
mountPoint = "/var/lib/${serviceCfg.name}/misc";
proto = "virtiofs";
source = miscPath user;
tag = "${serviceCfg.name}_${user}_misc";
}
{ {
mountPoint = "/run/secrets"; mountPoint = "/run/secrets";
proto = "virtiofs"; proto = "virtiofs";
source = "/run/secrets/${serviceCfg.name}"; source = "/run/secrets/${serviceCfg.name}";
tag = "host_secrets"; tag = "host_secrets";
} }
] ];
++ mounts;
}; };
}; };
}; };

View file

@ -4,99 +4,21 @@
}: }:
let let
inherit (import ../../../helpers.nix { inherit flake; }) labHelpers; inherit (import ../../../helpers.nix { inherit flake; }) labHelpers;
inherit (labHelpers) inherit (labHelpers) guestPath;
guestPath
mediaPath
docsPath
miscPath
;
inherit (import ../config { inherit flake; }) syncthingVM; inherit (import ../config { inherit flake; }) syncthingVM;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
serviceCfg = instances.syncthing; serviceCfg = instances.syncthing;
interface0Cfg = serviceCfg.interfaces.interface0; interfaceCfg = serviceCfg.interfaces.interface0;
foldersHelper = user: { syncthingNick = syncthingVM {
docs = { user = user0;
enable = true; pass = "$2y$05$WoNmQOeBPM5GhxhgkUmZqOoyBU0Y34e9N7gLZ3Xwb2J8V0j5Uoy7u";
id = "docs"; ip = interfaceCfg.microvm.ip;
path = "/var/lib/${serviceCfg.name}/docs"; mac = interfaceCfg.microvm.mac;
devices = [ userMac = interfaceCfg.microvm.macUser;
"${user}Phone" ssh = interfaceCfg.microvm.ssh;
]; mnt = guestPath user0;
};
media = {
enable = true;
id = "media";
path = "/var/lib/${serviceCfg.name}/media";
devices = [
"${user}Phone"
];
};
misc = {
enable = true;
id = "misc";
path = "/var/lib/${serviceCfg.name}/misc";
devices = [
"${user}Phone"
];
};
}; };
devicesHelper = user: syncID: device: deviceIP: {
"${user}${device}" = {
autoAcceptFolders = true;
name = "${user}${device}";
addresses = [
"tcp://${deviceIP}:${toString serviceCfg.ports.port2}"
];
id = syncID;
};
};
mountsHelper = user: [
{
mountPoint = "/var/lib/${serviceCfg.name}/docs";
proto = "virtiofs";
source = docsPath user;
tag = "${serviceCfg.name}_${user}_docs";
}
{
mountPoint = "/var/lib/${serviceCfg.name}/media";
proto = "virtiofs";
source = mediaPath user;
tag = "${serviceCfg.name}_${user}_media";
}
{
mountPoint = "/var/lib/${serviceCfg.name}/misc";
proto = "virtiofs";
source = miscPath user;
tag = "${serviceCfg.name}_${user}_misc";
}
];
tmpRulesIn = [
"d /var/lib/${serviceCfg.name}/docs 0755 ${serviceCfg.name} ${serviceCfg.name} -"
"d /var/lib/${serviceCfg.name}/media 0755 ${serviceCfg.name} ${serviceCfg.name} -"
"d /var/lib/${serviceCfg.name}/misc 0755 ${serviceCfg.name} ${serviceCfg.name} -"
];
syncthingNick =
let
phoneID = "OALKHLZ-OODUWVX-PAC2LI7-UMZMSZO-FELLRCD-RS4DHJS-PVA5YQK-WTFXXQI";
in
syncthingVM {
user = user0;
pass = "$2y$05$WoNmQOeBPM5GhxhgkUmZqOoyBU0Y34e9N7gLZ3Xwb2J8V0j5Uoy7u";
ip = interface0Cfg.microvm.ip;
mac = interface0Cfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh;
mnt = guestPath user0;
folders = foldersHelper user0;
devices = devicesHelper user0 phoneID "Phone" "192.168.50.8";
mounts = mountsHelper user0;
tmp = tmpRulesIn;
};
in in
syncthingNick syncthingNick

View file

@ -9,22 +9,22 @@ let
inherit (import ../config { inherit flake; }) vaultwardenVM; inherit (import ../config { inherit flake; }) vaultwardenVM;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
interface0Cfg = instances.vaultwarden.interfaces.interface1; interfaceCfg = instances.vaultwarden.interfaces.interface1;
smtpCfg = instances.smtp; smtCfg = instances.smtp;
host = flake.inputs.linkpage.secrets.domains.projectsite; host = flake.inputs.linkpage.secrets.domains.projectsite;
vaultwardenProject = vaultwardenVM { vaultwardenProject = vaultwardenVM {
user = "project"; user = "project";
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = mntPath; mnt = mntPath;
inter = "enp0s5"; inter = "enp0s5";
host = "${interface0Cfg.subdomain}.${host}"; host = "${interfaceCfg.subdomain}.${host}";
smtpFrom = "noreply@${host}"; smtpFrom = "noreply@${host}";
smtpHost = smtpCfg.interfaces.interface0.domain; smtpHost = smtCfg.interfaces.interface0.domain;
smtpPort = smtpCfg.ports.port1; smtpPort = smtCfg.ports.port1;
smtpUser = "noreply@${host}"; smtpUser = "noreply@${host}";
}; };
in in

View file

@ -10,22 +10,22 @@ let
inherit (flake.config.people) user0; inherit (flake.config.people) user0;
inherit (flake.config.services) instances; inherit (flake.config.services) instances;
interface0Cfg = instances.vaultwarden.interfaces.interface0; interfaceCfg = instances.vaultwarden.interfaces.interface0;
smtpCfg = instances.smtp; smtCfg = instances.smtp;
vaultwardenNick = vaultwardenVM { vaultwardenNick = vaultwardenVM {
user = user0; user = user0;
ip = interface0Cfg.microvm.ip; ip = interfaceCfg.microvm.ip;
mac = interface0Cfg.microvm.mac; mac = interfaceCfg.microvm.mac;
userMac = interface0Cfg.microvm.macUser; userMac = interfaceCfg.microvm.macUser;
ssh = interface0Cfg.microvm.ssh; ssh = interfaceCfg.microvm.ssh;
mnt = guestPath user0; mnt = guestPath user0;
inter = "enp0s5"; inter = "enp0s5";
host = interface0Cfg.domain; host = interfaceCfg.domain;
smtpFrom = smtpCfg.interfaces.interface0.email; smtpFrom = smtCfg.interfaces.interface0.email;
smtpHost = smtpCfg.interfaces.interface0.domain; smtpHost = smtCfg.interfaces.interface0.domain;
smtpPort = smtpCfg.ports.port1; smtpPort = smtCfg.ports.port1;
smtpUser = smtpCfg.interfaces.interface0.email; smtpUser = smtCfg.interfaces.interface0.email;
}; };
in in