mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-12-14 02:20:53 -06:00
test: setting up nas structure
This commit is contained in:
parent
4225970826
commit
a92229390e
36 changed files with 275 additions and 1039 deletions
|
|
@ -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} -"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue