Compare commits

..

38 commits

Author SHA1 Message Date
Nick
77a31e9688 refactor: abstracting out bookmark info 2025-07-07 18:57:55 -05:00
Nick
85117d2dca feat: opencloud test 2025-07-07 17:29:12 -05:00
Nick
da476c8d83 feat: opencloud test 2025-07-07 17:09:28 -05:00
Nick
9fc9a411d8 feat: opencloud test 2025-07-07 17:00:24 -05:00
Nick
60b1d395d4 feat: opencloud test 2025-07-07 16:40:04 -05:00
Nick
f67c2794d6 feat: opencloud test 2025-07-07 16:33:07 -05:00
Nick
42fa5f15a1 feat: opencloud test 2025-07-07 16:10:44 -05:00
Nick
6804acfc28 feat: opencloud test 2025-07-07 15:59:14 -05:00
Nick
17b17a866e feat: opencloud test 2025-07-07 15:50:45 -05:00
Nick
11b3634d56 feat: opencloud test 2025-07-07 15:40:51 -05:00
Nick
1e99a5aff9 feat: opencloud test 2025-07-07 15:38:48 -05:00
Nick
9a32cc9f72 feat: opencloud test 2025-07-07 15:29:42 -05:00
Nick
34828ec16b feat: opencloud test 2025-07-07 15:28:44 -05:00
Nick
d557f2c07c feat: opencloud test 2025-07-07 14:59:43 -05:00
Nick
10961d5dba feat: opencloud test 2025-07-07 14:57:39 -05:00
Nick
954a7d83bc feat: opencloud test 2025-07-07 14:53:49 -05:00
Nick
7b7e2f85ff feat: opencloud test 2025-07-07 14:52:37 -05:00
Nick
89e4a72dae feat: opencloud test 2025-07-07 14:51:19 -05:00
Nick
d33328926e feat: opencloud test 2025-07-07 14:49:37 -05:00
Nick
537619237e feat: opencloud test 2025-07-07 14:48:08 -05:00
Nick
fa54767e7f feat: opencloud test 2025-07-07 14:40:12 -05:00
Nick
6e3ce364a5 feat: opencloud test 2025-07-07 14:39:12 -05:00
Nick
da32d96346 feat: opencloud test 2025-07-07 14:36:01 -05:00
Nick
625e1ffd2f feat: opencloud test 2025-07-07 14:35:03 -05:00
Nick
c6911defae feat: opencloud test 2025-07-07 14:33:52 -05:00
Nick
c40d8064d5 feat: opencloud test 2025-07-07 14:31:50 -05:00
Nick
6905ba746b feat: opencloud test 2025-07-07 14:29:41 -05:00
Nick
9c65eb3d71 feat: opencloud test 2025-07-07 14:28:42 -05:00
Nick
3ab2ef86b9 feat: opencloud test 2025-07-07 14:22:36 -05:00
Nick
9a37c3b357 feat: opencloud test 2025-07-07 14:18:07 -05:00
Nick
1535f418b5 feat: opencloud test 2025-07-07 14:15:30 -05:00
Nick
e763a580ca feat: opencloud test 2025-07-07 14:09:12 -05:00
Nick
8cf23010b7 feat: opencloud test 2025-07-07 14:04:06 -05:00
Nick
aa0e210939 feat: opencloud test 2025-07-07 13:42:03 -05:00
Nick
c6db591e36 feat: opencloud test 2025-07-07 13:40:40 -05:00
Nick
df578da148 feat: opencloud test 2025-07-07 13:39:57 -05:00
Nick
8b136c2c9c feat: opencloud test 2025-07-07 13:38:50 -05:00
Nick
12e7183973 feat: opencloud test 2025-07-07 13:35:12 -05:00
27 changed files with 243 additions and 74 deletions

View file

@ -57,6 +57,7 @@ let
label = stringType; label = stringType;
name = stringType; name = stringType;
hostname = stringType; hostname = stringType;
tags = listType;
domains = genOptions stringType "url"; domains = genOptions stringType "url";
dns = genOptions stringType "provider"; dns = genOptions stringType "provider";
localhost = genOptions stringType "address"; localhost = genOptions stringType "address";
@ -241,6 +242,7 @@ in
sopsPath = "/var/lib/secrets"; sopsPath = "/var/lib/secrets";
sslPath = "/var/lib/acme"; sslPath = "/var/lib/acme";
varLib = "/var/lib"; varLib = "/var/lib";
synologyName = "synology";
dummy = ""; dummy = "";
}; };

View file

@ -21,6 +21,9 @@ in
url0 = audiobookshelfDomain; url0 = audiobookshelfDomain;
}; };
subdomain = audiobookshelfSubdomain; subdomain = audiobookshelfSubdomain;
tags = [
];
paths = { paths = {
path0 = "${servicePath}/${audiobookshelfLabel}"; path0 = "${servicePath}/${audiobookshelfLabel}";
}; };

View file

@ -25,6 +25,11 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = subdomain; subdomain = subdomain;
tags = [
name
"forge"
"git"
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
}; };

View file

@ -25,6 +25,12 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = subdomain; subdomain = subdomain;
tags = [
"glance"
"dashboard"
"weather"
"podcasts"
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
}; };

View file

@ -19,6 +19,14 @@ in
domains = { domains = {
url0 = domain; url0 = domain;
}; };
tags = [
"jelly"
"video"
"streaming"
"movies"
"shows"
"music"
];
subdomain = name; subdomain = name;
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";

View file

@ -22,6 +22,11 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = subdomain; subdomain = subdomain;
tags = [
name
"mast"
"md"
];
sops = { sops = {
path0 = "${sopsPath}/${name}"; path0 = "${sopsPath}/${name}";
}; };

View file

@ -15,6 +15,9 @@ in
path0 = "${sopsPath}/${name}"; path0 = "${sopsPath}/${name}";
}; };
subdomain = name; subdomain = name;
tags = [
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
path1 = ""; path1 = "";

View file

@ -24,6 +24,12 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = name; subdomain = name;
tags = [
name
"next"
"cloud"
"calendar"
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
}; };

View file

@ -21,6 +21,11 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = name; subdomain = name;
tags = [
name
"chat"
"ai"
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
path1 = "/mnt/media/storage/${name}"; path1 = "/mnt/media/storage/${name}";

View file

@ -0,0 +1,43 @@
{ moduleFunctions }:
let
inherit (moduleFunctions.instancesFunctions)
domain0
servicePath
sslPath
sopsPath
;
label = "OpenCloud";
name = "opencloud";
subdomain = "cloud";
domain = "${subdomain}.${domain0}";
in
{
label = label;
name = name;
email = {
address0 = "noreply@${domain0}";
};
sops = {
path0 = "${sopsPath}/${name}";
};
domains = {
url0 = domain;
};
subdomain = subdomain;
tags = [
name
"opencloud"
"cloud"
];
paths = {
path0 = "${servicePath}/${label}";
};
ports = {
port0 = 9200;
};
ssl = {
cert = "${sslPath}/${subdomain}.${domain0}/fullchain.pem";
key = "${sslPath}/${subdomain}.${domain0}/key.pem";
};
}

View file

@ -22,6 +22,9 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = subdomain; subdomain = subdomain;
tags = [
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
path1 = "/mnt/media/storage/${name}"; path1 = "/mnt/media/storage/${name}";

View file

@ -25,6 +25,9 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = subdomain; subdomain = subdomain;
tags = [
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
}; };

View file

@ -25,6 +25,11 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = subdomain; subdomain = subdomain;
tags = [
"search"
"sear"
"searx"
];
paths = { paths = {
path0 = "${servicePath}/${label}"; path0 = "${servicePath}/${label}";
}; };

View file

@ -4,6 +4,7 @@ let
domain0 domain0
sslPath sslPath
sopsPath sopsPath
synologyName
; ;
label = "Syncthing"; label = "Syncthing";
@ -20,6 +21,12 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = name; subdomain = name;
tags = [
name
synologyName
"sync"
"thing"
];
ports = { ports = {
port0 = 8388; # Syncthing (WebUI) port0 = 8388; # Syncthing (WebUI)
port1 = 21027; # Syncthing (Discovery) port1 = 21027; # Syncthing (Discovery)

View file

@ -2,14 +2,20 @@
let let
inherit (moduleFunctions.instancesFunctions) inherit (moduleFunctions.instancesFunctions)
sopsPath sopsPath
synologyName
; ;
label = "Synology"; label = "Synology";
name = "synology"; name = synologyName;
in in
{ {
label = label; label = label;
name = name; name = name;
tags = [
name
"dsm"
"cloud"
];
sops = { sops = {
path0 = "${sopsPath}/${name}"; path0 = "${sopsPath}/${name}";
}; };

View file

@ -18,6 +18,13 @@ in
sops = { sops = {
path0 = "${sopsPath}/${name}"; path0 = "${sopsPath}/${name}";
}; };
domains = {
url0 = domain3;
};
tags = [
name
"blog"
];
paths = { paths = {
path0 = "/var/lib/website/dist"; path0 = "/var/lib/website/dist";
path1 = ""; path1 = "";

View file

@ -24,6 +24,13 @@ in
url0 = domain; url0 = domain;
}; };
subdomain = name; subdomain = name;
tags = [
name
"bitwarden"
"vault"
"bit"
"warden"
];
paths = { paths = {
path0 = "${servicePath}/${label}/BackupDir"; path0 = "${servicePath}/${label}/BackupDir";
}; };

View file

@ -8,6 +8,8 @@ let
; ;
in in
{ {
name = "router";
label = "Router";
domains = { domains = {
url0 = domain0; url0 = domain0;
url1 = domain1; url1 = domain1;
@ -17,6 +19,10 @@ in
dns = { dns = {
provider0 = "namecheap"; provider0 = "namecheap";
}; };
tags = [
"router"
"asus"
];
localhost = { localhost = {
address0 = "127.0.0.1"; # Local address0 = "127.0.0.1"; # Local
address1 = "0.0.0.0"; # All address1 = "0.0.0.0"; # All

View file

@ -15,25 +15,6 @@ let
instances instances
; ;
jellyfinTags = [
"jelly"
"video"
"streaming"
"movies"
"shows"
"music"
];
ollamaTags = [
instances.ollama.name
"chat"
"ai"
];
syncthingTags = [
instances.syncthing.name
"sync"
"thing"
instances.synology.name
];
in in
{ {
name = "Self Hosted"; name = "Self Hosted";
@ -49,35 +30,39 @@ in
]; ];
keyword = "Website"; keyword = "Website";
} }
{
name = instances.opencloud.label;
url = "https://${instances.opencloud.domains.url0}";
tags = [
];
keyword = "Cloud";
}
{ {
name = instances.forgejo.label; name = instances.forgejo.label;
url = "https://${instances.forgejo.domains.url0}"; url = "https://${instances.forgejo.domains.url0}";
tags = [ tags = [
instances.forgejo.name
"forge"
"git"
]; ];
keyword = instances.forgejo.label; keyword = instances.forgejo.label;
} }
{ {
name = "${instances.jellyfin.label} (Internet)"; name = "${instances.jellyfin.label} (Internet)";
url = "https://${instances.jellyfin.domains.url0}"; url = "https://${instances.jellyfin.domains.url0}";
tags = jellyfinTags; tags = [ ];
keyword = instances.jellyfin.label; keyword = instances.jellyfin.label;
} }
{ {
name = "${instances.jellyfin.label} (Local)"; name = "${instances.jellyfin.label} (Local)";
url = "http://${ceres.ip.address0}:${toString instances.jellyfin.ports.port1}"; url = "http://${ceres.ip.address0}:${toString instances.jellyfin.ports.port1}";
tags = jellyfinTags; tags = [ ];
keyword = instances.jellyfin.label; keyword = instances.jellyfin.label;
} }
{ {
name = instances.mastodon.label; name = instances.mastodon.label;
url = "https://${instances.mastodon.domains.url0}"; url = "https://${instances.mastodon.domains.url0}";
tags = [ tags = [
instances.mastodon.name
"mast"
"md"
]; ];
keyword = instances.mastodon.label; keyword = instances.mastodon.label;
} }
@ -96,51 +81,34 @@ in
name = instances.nextcloud.label; name = instances.nextcloud.label;
url = "https://${instances.nextcloud.domains.url0}"; url = "https://${instances.nextcloud.domains.url0}";
tags = [ tags = [
instances.nextcloud.name
"next"
"cloud"
"calendar"
]; ];
keyword = instances.nextcloud.label; keyword = instances.nextcloud.label;
} }
{
name = aliases.name2;
url = instances.web.domains.url2;
tags = [
aliases.name3
"blog"
];
keyword = aliases.name2;
}
{ {
name = "${instances.glance.label} (Local)"; name = "${instances.glance.label} (Local)";
url = "https://${instances.glance.domains.url0}"; url = "https://${instances.glance.domains.url0}";
tags = [ tags = [
"glance"
"dashboard"
"weather"
"podcasts"
]; ];
keyword = instances.glance.label; keyword = instances.glance.label;
} }
{ {
name = "${instances.ollama.label} (Server)"; name = "${instances.ollama.label} (Server)";
url = "https://${instances.ollama.domains.url0}"; url = "https://${instances.ollama.domains.url0}";
tags = ollamaTags; tags = [ ];
keyword = instances.ollama.label; keyword = instances.ollama.label;
} }
{ {
name = "${instances.ollama.label} (Desktop)"; name = "${instances.ollama.label} (Desktop)";
url = "http://${mars.ip.address0}:${toString instances.ollama.ports.port0}"; url = "http://${mars.ip.address0}:${toString instances.ollama.ports.port0}";
tags = ollamaTags; tags = [ ];
keyword = instances.ollama.label; keyword = instances.ollama.label;
} }
{ {
name = "Router"; name = "Router";
url = "http://${instances.web.localhost.address2}"; url = "http://${instances.web.localhost.address2}";
tags = [ tags = [
"router"
"asus"
]; ];
keyword = "Router"; keyword = "Router";
} }
@ -148,9 +116,7 @@ in
name = "${instances.searx.label} (Internet)"; name = "${instances.searx.label} (Internet)";
url = "https://${instances.searx.domains.url0}"; url = "https://${instances.searx.domains.url0}";
tags = [ tags = [
"search"
"sear"
"searx"
]; ];
keyword = instances.searx.label; keyword = instances.searx.label;
} }
@ -158,25 +124,21 @@ in
name = "${instances.syncthing.label} (${instances.synology.label})"; name = "${instances.syncthing.label} (${instances.synology.label})";
url = "http://${synology.ip.address0}:${toString instances.syncthing.ports.port0}"; url = "http://${synology.ip.address0}:${toString instances.syncthing.ports.port0}";
tags = [ tags = [
"synology" ];
] ++ syncthingTags;
keyword = instances.syncthing.label; keyword = instances.syncthing.label;
} }
{ {
name = "${instances.syncthing.label} (Desktop)"; name = "${instances.syncthing.label} (Desktop)";
url = "http://localhost:${toString instances.syncthing.ports.port0}"; url = "http://localhost:${toString instances.syncthing.ports.port0}";
tags = [ tags = [
"desktop" ];
] ++ syncthingTags;
keyword = instances.syncthing.label; keyword = instances.syncthing.label;
} }
{ {
name = instances.synology.label; name = instances.synology.label;
url = "https://${synology.ip.address0}:${toString instances.synology.ports.port0}"; url = "https://${synology.ip.address0}:${toString instances.synology.ports.port0}";
tags = [ tags = [
instances.synology.name
"dsm"
"cloud"
]; ];
keyword = instances.synology.label; keyword = instances.synology.label;
} }
@ -184,11 +146,7 @@ in
name = instances.vaultwarden.label; name = instances.vaultwarden.label;
url = "https://${instances.vaultwarden.domains.url0}"; url = "https://${instances.vaultwarden.domains.url0}";
tags = [ tags = [
instances.vaultwarden.name
"bitwarden"
"vault"
"bit"
"warden"
]; ];
keyword = instances.vaultwarden.label; keyword = instances.vaultwarden.label;
} }

View file

@ -11,7 +11,7 @@ let
localhost = web.localhost.address0; localhost = web.localhost.address0;
in in
{ {
assistant = { agent = {
enabled = true; enabled = true;
default_model = { default_model = {
provider = "zed.dev"; provider = "zed.dev";

View file

@ -23,7 +23,7 @@ in
{ {
programs.zed-editor = { programs.zed-editor = {
enable = true; enable = true;
package = packagePath; # package = packagePath;
extraPackages = extraPackagesPath; extraPackages = extraPackagesPath;
extensions = extensionsPath; extensions = extensionsPath;
userKeymaps = userKeymapsPath; userKeymaps = userKeymapsPath;

View file

@ -84,11 +84,14 @@ let
"3, movetoworkspacesilent, 3" "3, movetoworkspacesilent, 3"
"4, movetoworkspacesilent, 4" "4, movetoworkspacesilent, 4"
"5, movetoworkspacesilent, 5" "5, movetoworkspacesilent, 5"
# Window Move
"C, movewindow, l" "C, movewindow, l"
"A, movewindow, u" "A, movewindow, u"
"E, movewindow, d" "E, movewindow, d"
"I, movewindow, r" "I, movewindow, r"
"Left, movewindow, l"
"Up, movewindow, u"
"Down, movewindow, d"
"Right, movewindow, r"
]; ];
shiftBinds = builtins.map (x: "SHIFT, " + x) [ shiftBinds = builtins.map (x: "SHIFT, " + x) [
@ -108,10 +111,6 @@ let
"3, movetoworkspacesilent, 3" "3, movetoworkspacesilent, 3"
"4, movetoworkspacesilent, 4" "4, movetoworkspacesilent, 4"
"5, movetoworkspacesilent, 5" "5, movetoworkspacesilent, 5"
"Left, movewindow, l"
"Up, movewindow, u"
"Down, movewindow, d"
"Right, movewindow, r"
]; ];
functionBinds = builtins.map (x: " , " + x) [ functionBinds = builtins.map (x: " , " + x) [

View file

@ -58,6 +58,7 @@ in
mastodon mastodon
minecraft minecraft
ollama ollama
opencloud
postgresql postgresql
samba samba
searx searx

View file

@ -41,6 +41,7 @@ in
"searx" "searx"
"syncthing" "syncthing"
"vaultwarden" "vaultwarden"
"opencloud"
] ]
) )
++ (map ++ (map

View file

@ -107,7 +107,6 @@ in
}) })
[ [
"pass" "pass"
"smtp"
] ]
); );
}; };

View file

@ -0,0 +1,79 @@
{ config, flake, ... }:
let
inherit (flake.config.machines.devices) ceres;
inherit (flake.config.services.instances) opencloud web;
service = opencloud;
localhost = web.localhost.address0;
host = service.domains.url0;
in
{
services = {
opencloud = {
enable = true;
url = "https://${host}";
port = service.ports.port0;
address = localhost;
stateDir = "/var/lib/${service.name}";
environmentFile = config.sops.secrets."${service.name}/env".path;
};
caddy = {
virtualHosts = {
"${host}" = {
extraConfig = ''
reverse_proxy https://${localhost}:${toString service.ports.port0} {
transport http {
tls_insecure_skip_verify
}
}
tls ${service.ssl.cert} ${service.ssl.key}
'';
};
};
};
};
sops =
let
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
mode = "600";
};
in
{
secrets = builtins.listToAttrs (
map
(secret: {
name = "${service.name}/${secret}";
value = sopsPath secret;
})
[
"env"
]
);
};
fileSystems."/var/lib/${service.name}" = {
device = service.paths.path0;
fsType = "none";
options = [
"bind"
];
depends = [
ceres.storage0.mount
];
};
systemd.tmpfiles.rules = [
"Z ${service.paths.path0} 755 ${service.name} ${service.name} -"
"Z ${service.sops.path0} 755 ${service.name} ${service.name} -"
];
networking = {
firewall = {
allowedTCPPorts = [
service.ports.port0
];
};
};
}

View file

@ -47,6 +47,8 @@ kanboard-smtp: ENC[AES256_GCM,data:eOIEGwJZlvbJaTfDRU3IFQ==,iv:Jex01WlHG3uxqUnTS
podgrab-pass: ENC[AES256_GCM,data:DVmJDb4VqcZDKNcedSaRA5dqKOzx1tSzDiK3i23+a6v3nK+4Kh7n8EA=,iv:SiiUjJLHkCOO1VKCmubftKx06laFqNv79tIPnkVYrJU=,tag:kdkT+03DemlNAsuzps8fnw==,type:str] podgrab-pass: ENC[AES256_GCM,data:DVmJDb4VqcZDKNcedSaRA5dqKOzx1tSzDiK3i23+a6v3nK+4Kh7n8EA=,iv:SiiUjJLHkCOO1VKCmubftKx06laFqNv79tIPnkVYrJU=,tag:kdkT+03DemlNAsuzps8fnw==,type:str]
firefly-iii-key: ENC[AES256_GCM,data:tLJfwB8De1vdGeccr4SxifU7KYAfnasoXISvz5mSR28=,iv:vknG+h2D04lECHE/PPA53aZqWk4ouYcH+WfP7WooPYU=,tag:HKma2cydw58pAnvOFH53fA==,type:str] firefly-iii-key: ENC[AES256_GCM,data:tLJfwB8De1vdGeccr4SxifU7KYAfnasoXISvz5mSR28=,iv:vknG+h2D04lECHE/PPA53aZqWk4ouYcH+WfP7WooPYU=,tag:HKma2cydw58pAnvOFH53fA==,type:str]
firefly-iii-pass: ENC[AES256_GCM,data:eJwIM4YHnXTqTOUfU/0CKMSS534VEZIxkBviI1pd7R4=,iv:pUv8ok5nLDGeCcP2hsTculk+MPPAjkupidQO0Jkc3Wc=,tag:zq7+lFjdOr5ORpthqXW8EA==,type:str] firefly-iii-pass: ENC[AES256_GCM,data:eJwIM4YHnXTqTOUfU/0CKMSS534VEZIxkBviI1pd7R4=,iv:pUv8ok5nLDGeCcP2hsTculk+MPPAjkupidQO0Jkc3Wc=,tag:zq7+lFjdOr5ORpthqXW8EA==,type:str]
opencloud:
env: ENC[AES256_GCM,data:JZOs+86/jhHtXuOb4fsk4ceZuFpSa6PAMN2/vmGlvlXvsx/Yk2ZXeZZU0jtwweN8Sk61A2538OdPpfKynBgwsZ2SgoxAIyJtQl3HZWdZzNZ6+/t+AFvvav/x9nUv1O5704FP5OYOMniQAmqu0ds0JIX3YV/cstoo+rNhNW2emlVhj2ABYhTxy0BFJ8A+Re9y5FN5WT4tmloF/21ZrIwtTw8ULQPCksJfTFwEE+cCN3aIWZn00/4zUuv6CEtZeKeOeLxgQL+G2pPhNrQzG+lw+AKLzXA2mJM+3Zfq0MplyXeFCLkV1GCHksrMPp2w5j2RdtfcdE9IP+tXoD/fZNfYgCK1Pk/JhkXcV9EPbz4KUL/+OpgFqh+RvKGPXH2iTV0B8t2Ag7NowxULI2jKw0c=,iv:1ClzjY1n48cQ9bdBewM5A5Lr/c13HbSSYJ7xYCwZDzA=,tag:FavwE2sX+wSgKOEpywFeMw==,type:str]
sops: sops:
age: age:
- recipient: age19dpncsdphdt2tmknjs99eghk527pvdrw0m29qjn2z2gg3et5tdtqycqhl0 - recipient: age19dpncsdphdt2tmknjs99eghk527pvdrw0m29qjn2z2gg3et5tdtqycqhl0
@ -58,7 +60,7 @@ sops:
bXBOa1VSakoyaWxpODJEOU11QUZCaUEK8Ch9Ten3DdrPHF1DTH2qei85AlHUOaLD bXBOa1VSakoyaWxpODJEOU11QUZCaUEK8Ch9Ten3DdrPHF1DTH2qei85AlHUOaLD
aNfzakake7ej+MxJYdKEU0bcWofNMKzIlZa2uM10KZSENDP8d8qlig== aNfzakake7ej+MxJYdKEU0bcWofNMKzIlZa2uM10KZSENDP8d8qlig==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-07-04T00:40:18Z" lastmodified: "2025-07-07T22:29:06Z"
mac: ENC[AES256_GCM,data:N2BwAzga2/Ig96p49rqNhhZ2udYWt7mQ9JD8DFXuxa3HOh3gtx7FWeWpGjvLnLWCgGcT4R61RKmgZQZRADNxYPE3vtdpPOFz0XvgcYSDlwslzBdSsVc08sh77P0LDgZsCzE1MxYynQ6nzFcc6gW5sorInLarsHoCCBC+Z5YpOVg=,iv:H6d3VrERM02/1zI5boFemEpMYD3greYZRqlSpBqROzM=,tag:TEakUvOlKoZYo/XPS6HVnA==,type:str] mac: ENC[AES256_GCM,data:MmVn9KJcM92hiubQti6vbw5sg4NldFU7uxAgX4b6lL7+6LaaIznrqBcplIAcelVWCvZhcQ25L4oQP0da7JgJDzMsiPYawy33MsSWatdST3PPr7ozvQqSgucbUcPja7Fyl6Yr0ijqkH2d8EdOg5km15LaEGir2jkDi+lBRmL2Msc=,iv:VYsheWRXrih4SYgtS5qVa9ZM8kw0k7ZOlKpEkCmBsHQ=,tag:eByH+iVgznc7A0F3HSX9/g==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.10.2