mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-08-09 05:14:41 -05:00
Compare commits
No commits in common. "480a6f4775a5e58563f4a2f3f2904c1e627dc709" and "77a31e96885c84e3d4ae6d6e8d6b02b976bc3239" have entirely different histories.
480a6f4775
...
77a31e9688
21 changed files with 142 additions and 114 deletions
|
@ -56,7 +56,6 @@ let
|
||||||
subdomain = stringType;
|
subdomain = stringType;
|
||||||
label = stringType;
|
label = stringType;
|
||||||
name = stringType;
|
name = stringType;
|
||||||
short = stringType;
|
|
||||||
hostname = stringType;
|
hostname = stringType;
|
||||||
tags = listType;
|
tags = listType;
|
||||||
domains = genOptions stringType "url";
|
domains = genOptions stringType "url";
|
||||||
|
|
|
@ -14,7 +14,6 @@ in
|
||||||
{
|
{
|
||||||
label = audiobookshelfLabel;
|
label = audiobookshelfLabel;
|
||||||
name = audiobookshelfName;
|
name = audiobookshelfName;
|
||||||
short = "Books";
|
|
||||||
sops = {
|
sops = {
|
||||||
path0 = "${sopsPath}/${audiobookshelfName}";
|
path0 = "${sopsPath}/${audiobookshelfName}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = label;
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${domain3}";
|
address0 = "noreply@${domain3}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = label;
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${domain0}";
|
address0 = "noreply@${domain0}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,7 +13,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Jelly";
|
|
||||||
sops = {
|
sops = {
|
||||||
path0 = "${sopsPath}/${name}";
|
path0 = "${sopsPath}/${name}";
|
||||||
};
|
};
|
||||||
|
@ -34,8 +33,8 @@ in
|
||||||
path1 = "${servicePath}/${label}/cache";
|
path1 = "${servicePath}/${label}/cache";
|
||||||
};
|
};
|
||||||
ports = {
|
ports = {
|
||||||
port0 = 8096; # Jellyfin HTTP
|
port0 = 5055; # Jellyseer
|
||||||
port1 = 5055; # Jellyseer
|
port1 = 8096; # Jellyfin HTTP
|
||||||
port2 = 8920; # Jellyfin HTTPS
|
port2 = 8920; # Jellyfin HTTPS
|
||||||
};
|
};
|
||||||
ssl = {
|
ssl = {
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Mast";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${domain3}";
|
address0 = "noreply@${domain3}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = label;
|
|
||||||
sops = {
|
sops = {
|
||||||
path0 = "${sopsPath}/${name}";
|
path0 = "${sopsPath}/${name}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Next";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${name}.${domain0}";
|
address0 = "noreply@${name}.${domain0}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = label;
|
|
||||||
sops = {
|
sops = {
|
||||||
path0 = "${sopsPath}/${name}";
|
path0 = "${sopsPath}/${name}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Cloud";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${domain0}";
|
address0 = "noreply@${domain0}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Cast";
|
|
||||||
sops = {
|
sops = {
|
||||||
path0 = "${sopsPath}/${name}";
|
path0 = "${sopsPath}/${name}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Peer";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${domain3}";
|
address0 = "noreply@${domain3}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Sear";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${domain0}";
|
address0 = "noreply@${domain0}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Sync";
|
|
||||||
sops = {
|
sops = {
|
||||||
path0 = "${sopsPath}/${name}";
|
path0 = "${sopsPath}/${name}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Nas";
|
|
||||||
tags = [
|
tags = [
|
||||||
name
|
name
|
||||||
"dsm"
|
"dsm"
|
||||||
|
|
|
@ -12,7 +12,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "upRoot";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "nick@${domain3}";
|
address0 = "nick@${domain3}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,6 @@ in
|
||||||
{
|
{
|
||||||
label = label;
|
label = label;
|
||||||
name = name;
|
name = name;
|
||||||
short = "Vault";
|
|
||||||
email = {
|
email = {
|
||||||
address0 = "noreply@${name}.${domain0}";
|
address0 = "noreply@${name}.${domain0}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,12 +6,10 @@ let
|
||||||
domain2
|
domain2
|
||||||
domain3
|
domain3
|
||||||
;
|
;
|
||||||
label = "Router";
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
label = label;
|
|
||||||
name = "router";
|
name = "router";
|
||||||
short = label;
|
label = "Router";
|
||||||
domains = {
|
domains = {
|
||||||
url0 = domain0;
|
url0 = domain0;
|
||||||
url1 = domain1;
|
url1 = domain1;
|
||||||
|
|
|
@ -84,26 +84,5 @@ in
|
||||||
];
|
];
|
||||||
keyword = "Hack";
|
keyword = "Hack";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
name = "Elm-Land Server";
|
|
||||||
url = "http://localhost:1234";
|
|
||||||
tags = [
|
|
||||||
"elm-land"
|
|
||||||
"elm"
|
|
||||||
"land"
|
|
||||||
];
|
|
||||||
keyword = "Website";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Namecheap";
|
|
||||||
url = "https://www.namecheap.com";
|
|
||||||
tags = [
|
|
||||||
"namecheap"
|
|
||||||
"name"
|
|
||||||
"cheap"
|
|
||||||
"dns"
|
|
||||||
];
|
|
||||||
keyword = "Name";
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
{ flake, ... }:
|
{ flake, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (flake.config.people)
|
||||||
|
user0
|
||||||
|
;
|
||||||
|
inherit (flake.config.people.users.${user0})
|
||||||
|
aliases
|
||||||
|
;
|
||||||
inherit (flake.config.machines.devices)
|
inherit (flake.config.machines.devices)
|
||||||
synology
|
synology
|
||||||
ceres
|
ceres
|
||||||
|
@ -9,78 +15,140 @@ let
|
||||||
instances
|
instances
|
||||||
;
|
;
|
||||||
|
|
||||||
makeBookmarks =
|
|
||||||
{
|
|
||||||
suffix,
|
|
||||||
urlTemplate,
|
|
||||||
services,
|
|
||||||
}:
|
|
||||||
builtins.map (name: {
|
|
||||||
name = "${instances.${name}.label} ${suffix}";
|
|
||||||
url = urlTemplate name;
|
|
||||||
tags = instances.${name}.tags;
|
|
||||||
keyword = instances.${name}.short;
|
|
||||||
}) (builtins.map (service: instances.${service}.name) services);
|
|
||||||
|
|
||||||
bookmarkConfigs =
|
|
||||||
let
|
|
||||||
port = name: toString instances.${name}.ports.port0;
|
|
||||||
in
|
|
||||||
[
|
|
||||||
{
|
|
||||||
suffix = "(Remote)";
|
|
||||||
urlTemplate = name: "https://${instances.${name}.domains.url0}";
|
|
||||||
services = [
|
|
||||||
"audiobookshelf"
|
|
||||||
"forgejo"
|
|
||||||
"glance"
|
|
||||||
"jellyfin"
|
|
||||||
"mastodon"
|
|
||||||
"ollama"
|
|
||||||
"opencloud"
|
|
||||||
"owncast"
|
|
||||||
"peertube"
|
|
||||||
"searx"
|
|
||||||
"vaultwarden"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
suffix = "(Desktop)";
|
|
||||||
urlTemplate = "http://${mars.ip.address0}:${port}";
|
|
||||||
services = [
|
|
||||||
"ollama"
|
|
||||||
"syncthing"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
suffix = "(Server)";
|
|
||||||
urlTemplate = "http://${ceres.ip.address0}:${port}";
|
|
||||||
services = [
|
|
||||||
"jellyfin"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
suffix = "(Synology)";
|
|
||||||
urlTemplate = "http://${synology.ip.address0}:${port}";
|
|
||||||
services = [
|
|
||||||
"syncthing"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
generatedBookmarks = builtins.concatLists (builtins.map makeBookmarks bookmarkConfigs);
|
|
||||||
|
|
||||||
flatBookmarks = [
|
|
||||||
{
|
|
||||||
name = instances.web.label;
|
|
||||||
url = "http://${instances.web.localhost.address2}";
|
|
||||||
tags = instances.web.tags;
|
|
||||||
keyword = instances.web.label;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
name = "Self Hosted";
|
name = "Self Hosted";
|
||||||
toolbar = false;
|
toolbar = false;
|
||||||
bookmarks = flatBookmarks ++ generatedBookmarks;
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Elm-Land Server";
|
||||||
|
url = "http://localhost:1234";
|
||||||
|
tags = [
|
||||||
|
"elm-land"
|
||||||
|
"elm"
|
||||||
|
"land"
|
||||||
|
];
|
||||||
|
keyword = "Website";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = instances.opencloud.label;
|
||||||
|
url = "https://${instances.opencloud.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = "Cloud";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = instances.forgejo.label;
|
||||||
|
url = "https://${instances.forgejo.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.forgejo.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.jellyfin.label} (Internet)";
|
||||||
|
url = "https://${instances.jellyfin.domains.url0}";
|
||||||
|
tags = [ ];
|
||||||
|
keyword = instances.jellyfin.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.jellyfin.label} (Local)";
|
||||||
|
url = "http://${ceres.ip.address0}:${toString instances.jellyfin.ports.port1}";
|
||||||
|
tags = [ ];
|
||||||
|
keyword = instances.jellyfin.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = instances.mastodon.label;
|
||||||
|
url = "https://${instances.mastodon.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.mastodon.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Namecheap";
|
||||||
|
url = "https://www.namecheap.com";
|
||||||
|
tags = [
|
||||||
|
"namecheap"
|
||||||
|
"name"
|
||||||
|
"cheap"
|
||||||
|
"dns"
|
||||||
|
];
|
||||||
|
keyword = "Name";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = instances.nextcloud.label;
|
||||||
|
url = "https://${instances.nextcloud.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.nextcloud.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.glance.label} (Local)";
|
||||||
|
url = "https://${instances.glance.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.glance.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.ollama.label} (Server)";
|
||||||
|
url = "https://${instances.ollama.domains.url0}";
|
||||||
|
tags = [ ];
|
||||||
|
keyword = instances.ollama.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.ollama.label} (Desktop)";
|
||||||
|
url = "http://${mars.ip.address0}:${toString instances.ollama.ports.port0}";
|
||||||
|
tags = [ ];
|
||||||
|
keyword = instances.ollama.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Router";
|
||||||
|
url = "http://${instances.web.localhost.address2}";
|
||||||
|
tags = [
|
||||||
|
];
|
||||||
|
keyword = "Router";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.searx.label} (Internet)";
|
||||||
|
url = "https://${instances.searx.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.searx.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.syncthing.label} (${instances.synology.label})";
|
||||||
|
url = "http://${synology.ip.address0}:${toString instances.syncthing.ports.port0}";
|
||||||
|
tags = [
|
||||||
|
];
|
||||||
|
keyword = instances.syncthing.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${instances.syncthing.label} (Desktop)";
|
||||||
|
url = "http://localhost:${toString instances.syncthing.ports.port0}";
|
||||||
|
tags = [
|
||||||
|
];
|
||||||
|
keyword = instances.syncthing.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = instances.synology.label;
|
||||||
|
url = "https://${synology.ip.address0}:${toString instances.synology.ports.port0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.synology.label;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = instances.vaultwarden.label;
|
||||||
|
url = "https://${instances.vaultwarden.domains.url0}";
|
||||||
|
tags = [
|
||||||
|
|
||||||
|
];
|
||||||
|
keyword = instances.vaultwarden.label;
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ in
|
||||||
redir /.well-known/carddav /remote.php/dav/ 301
|
redir /.well-known/carddav /remote.php/dav/ 301
|
||||||
redir /.well-known/caldav /remote.php/dav/ 301
|
redir /.well-known/caldav /remote.php/dav/ 301
|
||||||
|
|
||||||
reverse_proxy ${localhost}:${toString service.ports.port0}
|
reverse_proxy ${localhost}:${toString service.ports.port1}
|
||||||
|
|
||||||
tls ${service.ssl.cert} ${service.ssl.key}
|
tls ${service.ssl.cert} ${service.ssl.key}
|
||||||
'';
|
'';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue