Compare commits
2 Commits
b7eab2dd94
...
6389b9f012
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6389b9f012 | ||
|
|
32545e4fec |
@@ -18,8 +18,8 @@ in
|
|||||||
apps.dictionaries.enable = true;
|
apps.dictionaries.enable = true;
|
||||||
apps.dictionaries.users = "jawz";
|
apps.dictionaries.users = "jawz";
|
||||||
shell = enableList mkEnabledWithUsers [
|
shell = enableList mkEnabledWithUsers [
|
||||||
"tools"
|
|
||||||
"multimedia"
|
"multimedia"
|
||||||
|
"tools"
|
||||||
];
|
];
|
||||||
services = enableList mkEnabled [
|
services = enableList mkEnabled [
|
||||||
"network"
|
"network"
|
||||||
@@ -32,21 +32,21 @@ in
|
|||||||
"sh"
|
"sh"
|
||||||
];
|
];
|
||||||
units = enableList mkEnabled [
|
units = enableList mkEnabled [
|
||||||
"downloadManga"
|
|
||||||
"download"
|
"download"
|
||||||
|
"downloadManga"
|
||||||
"stream-dl"
|
"stream-dl"
|
||||||
];
|
];
|
||||||
scripts = enableList mkEnabled [
|
scripts = enableList mkEnabled [
|
||||||
"run"
|
|
||||||
"download"
|
"download"
|
||||||
"split-dir"
|
|
||||||
"ffmpreg"
|
|
||||||
"ffmpeg4discord"
|
"ffmpeg4discord"
|
||||||
"manage-library"
|
"ffmpreg"
|
||||||
"library-report"
|
|
||||||
"stream-dl"
|
|
||||||
"pika-list"
|
|
||||||
"find-dup-episodes"
|
"find-dup-episodes"
|
||||||
|
"library-report"
|
||||||
|
"manage-library"
|
||||||
|
"pika-list"
|
||||||
|
"run"
|
||||||
|
"split-dir"
|
||||||
|
"stream-dl"
|
||||||
"tuh-activity-logger"
|
"tuh-activity-logger"
|
||||||
];
|
];
|
||||||
servers = {
|
servers = {
|
||||||
@@ -57,40 +57,40 @@ in
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
// enableList mkEnabled [
|
// enableList mkEnabled [
|
||||||
"syncplay"
|
"atticd"
|
||||||
"qbittorrent"
|
|
||||||
"sabnzbd"
|
|
||||||
"unpackerr"
|
|
||||||
"postgres"
|
|
||||||
"paperless"
|
|
||||||
"stash"
|
|
||||||
"bazarr"
|
"bazarr"
|
||||||
"collabora"
|
"collabora"
|
||||||
|
"gitea"
|
||||||
"homepage"
|
"homepage"
|
||||||
|
"jellyfin"
|
||||||
"kavita"
|
"kavita"
|
||||||
"lidarr"
|
"lidarr"
|
||||||
"maloja"
|
"maloja"
|
||||||
"microbin"
|
|
||||||
"multi-scrobbler"
|
|
||||||
"plex"
|
|
||||||
"prowlarr"
|
|
||||||
"radarr"
|
|
||||||
"ryot"
|
|
||||||
"sonarr"
|
|
||||||
"synapse"
|
|
||||||
"jellyfin"
|
|
||||||
"gitea"
|
|
||||||
"mealie"
|
"mealie"
|
||||||
"metube"
|
"metube"
|
||||||
"atticd"
|
"microbin"
|
||||||
|
"multi-scrobbler"
|
||||||
|
"paperless"
|
||||||
|
"plex"
|
||||||
|
"postgres"
|
||||||
|
"prowlarr"
|
||||||
|
"qbittorrent"
|
||||||
|
"radarr"
|
||||||
|
"ryot"
|
||||||
|
"sabnzbd"
|
||||||
|
"sonarr"
|
||||||
|
"stash"
|
||||||
|
"synapse"
|
||||||
|
"syncplay"
|
||||||
|
"unpackerr"
|
||||||
]
|
]
|
||||||
// enableList mkEnabledIp [
|
// enableList mkEnabledIp [
|
||||||
"audiobookshelf"
|
"audiobookshelf"
|
||||||
"vaultwarden"
|
|
||||||
"readeck"
|
|
||||||
"keycloak"
|
|
||||||
"oauth2-proxy"
|
|
||||||
"isso"
|
"isso"
|
||||||
|
"keycloak"
|
||||||
|
"linkwarden"
|
||||||
|
"oauth2-proxy"
|
||||||
"plausible"
|
"plausible"
|
||||||
|
"vaultwarden"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,34 +6,34 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
proxyReverseServices = [
|
proxyReverseServices = [
|
||||||
"firefox-syncserver"
|
|
||||||
"isso"
|
|
||||||
"plausible"
|
|
||||||
"readeck"
|
|
||||||
"microbin"
|
|
||||||
"ryot"
|
|
||||||
"bazarr"
|
"bazarr"
|
||||||
"shiori"
|
"firefox-syncserver"
|
||||||
"metube"
|
|
||||||
"maloja"
|
|
||||||
"vaultwarden"
|
|
||||||
"mealie"
|
|
||||||
"kavita"
|
|
||||||
"multi-scrobbler"
|
|
||||||
"nix-serve"
|
|
||||||
"flame"
|
"flame"
|
||||||
"flameSecret"
|
"flameSecret"
|
||||||
|
"isso"
|
||||||
|
"kavita"
|
||||||
|
"linkwarden"
|
||||||
|
"maloja"
|
||||||
|
"mealie"
|
||||||
|
"metube"
|
||||||
|
"microbin"
|
||||||
|
"multi-scrobbler"
|
||||||
|
"nix-serve"
|
||||||
|
"plausible"
|
||||||
|
"ryot"
|
||||||
|
"shiori"
|
||||||
|
"vaultwarden"
|
||||||
];
|
];
|
||||||
proxyReverseFixServices = [
|
proxyReverseFixServices = [
|
||||||
|
"atticd"
|
||||||
"audiobookshelf"
|
"audiobookshelf"
|
||||||
"lidarr"
|
|
||||||
"gitea"
|
"gitea"
|
||||||
"prowlarr"
|
"lidarr"
|
||||||
"ombi"
|
"ombi"
|
||||||
|
"prowlarr"
|
||||||
"radarr"
|
"radarr"
|
||||||
"sonarr"
|
"sonarr"
|
||||||
"stash"
|
"stash"
|
||||||
"atticd"
|
|
||||||
];
|
];
|
||||||
proxyReversePrivateServices = [
|
proxyReversePrivateServices = [
|
||||||
"homepage"
|
"homepage"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"server bookmarks" = [
|
"server bookmarks" = [
|
||||||
{
|
{
|
||||||
readeck = [
|
analytics = [
|
||||||
{
|
{
|
||||||
abbr = "RD";
|
abbr = "AN";
|
||||||
href = "https://laters.lebubu.org/";
|
href = "https://analytics.lebubu.org";
|
||||||
description = "";
|
description = "";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
header = false;
|
header = false;
|
||||||
tab = "servers";
|
tab = "servers";
|
||||||
style = "row";
|
style = "row";
|
||||||
columns = 3;
|
columns = 4;
|
||||||
};
|
};
|
||||||
"server bookmarks" = {
|
"server bookmarks" = {
|
||||||
header = false;
|
header = false;
|
||||||
|
|||||||
@@ -188,6 +188,19 @@
|
|||||||
version = 2;
|
version = 2;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
linkwarden =
|
||||||
|
let
|
||||||
|
cfg = config.my.servers.linkwarden;
|
||||||
|
in
|
||||||
|
lib.mkIf (cfg.enable || cfg.enableProxy) {
|
||||||
|
icon = "${cfg.name}.png";
|
||||||
|
href = cfg.url;
|
||||||
|
widget = {
|
||||||
|
url = "http://${config.my.ips.wg-server}:${toString cfg.port}";
|
||||||
|
type = cfg.name;
|
||||||
|
key = "{{HOMEPAGE_VAR_LINKWARDEN}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
nextcloud =
|
nextcloud =
|
||||||
let
|
let
|
||||||
cfg = config.my.servers.nextcloud;
|
cfg = config.my.servers.nextcloud;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ in
|
|||||||
{ inherit (services) nextcloud; }
|
{ inherit (services) nextcloud; }
|
||||||
{ inherit (services) gitea; }
|
{ inherit (services) gitea; }
|
||||||
{ inherit (services) mealie; }
|
{ inherit (services) mealie; }
|
||||||
|
{ inherit (services) linkwarden; }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
34
modules/servers/linkwarden.nix
Normal file
34
modules/servers/linkwarden.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
setup = import ../factories/mkserver.nix { inherit lib config; };
|
||||||
|
cfg = config.my.servers.linkwarden;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.servers.linkwarden = setup.mkOptions "linkwarden" "links" 3000;
|
||||||
|
config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable && config.my.secureHost) {
|
||||||
|
sops.secrets.linkwarden.sopsFile = ../../secrets/env.yaml;
|
||||||
|
services.linkwarden = {
|
||||||
|
inherit (cfg) enable;
|
||||||
|
host = cfg.ip;
|
||||||
|
inherit (cfg) port;
|
||||||
|
openFirewall = true;
|
||||||
|
environment = {
|
||||||
|
NEXTAUTH_URL = "${cfg.url}/api/v1/auth";
|
||||||
|
NEXT_PUBLIC_KEYCLOAK_ENABLED = "true";
|
||||||
|
OPENAI_MODEL = "gpt-4o";
|
||||||
|
KEYCLOAK_ISSUER = "${config.my.servers.keycloak.url}/realms/homelab";
|
||||||
|
};
|
||||||
|
environmentFile = config.sops.secrets.linkwarden.path;
|
||||||
|
database = {
|
||||||
|
host = config.my.postgresSocket;
|
||||||
|
inherit (cfg) name;
|
||||||
|
user = cfg.name;
|
||||||
|
createLocally = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -27,20 +27,20 @@ let
|
|||||||
"$@"
|
"$@"
|
||||||
'';
|
'';
|
||||||
dbNames = [
|
dbNames = [
|
||||||
"jawz"
|
|
||||||
"paperless"
|
|
||||||
"nextcloud"
|
|
||||||
"ryot"
|
|
||||||
"vaultwarden"
|
|
||||||
"shiori"
|
|
||||||
"mealie"
|
|
||||||
"firefly-iii"
|
|
||||||
"matrix-synapse"
|
|
||||||
"readeck"
|
|
||||||
"sonarqube"
|
|
||||||
"gitea"
|
|
||||||
"atticd"
|
"atticd"
|
||||||
|
"firefly-iii"
|
||||||
|
"gitea"
|
||||||
|
"jawz"
|
||||||
"keycloak"
|
"keycloak"
|
||||||
|
"linkwarden"
|
||||||
|
"matrix-synapse"
|
||||||
|
"mealie"
|
||||||
|
"nextcloud"
|
||||||
|
"paperless"
|
||||||
|
"ryot"
|
||||||
|
"shiori"
|
||||||
|
"sonarqube"
|
||||||
|
"vaultwarden"
|
||||||
"webref"
|
"webref"
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
linkwarden: ENC[AES256_GCM,data:G73i29pEyjmcHqo9NbHFUL6XMyLRzxln8WJyon+pk1uqb4I+eqYWlxk+uHNARPXOg0vXfDkDXDGPP7ogCa1En4yOZoY7ApuC0iTUOxicZY3/E8WQGXDEsvOlbr8yPiNLWQGj9aDtSMOOMv/NMv0GN2d7AfT5Kso9Rjrza4bUeq29DMttwa2Nfoum+zykGS3/zbsVH+aHYLJU3dCyY7RSdq84JfVBPaINVgBG+akeO7Uz3ArUOBn5sjmva9Ve5pbY6c5pBLnC//ypmGkqu4sb9Fy84XUw739Ay2kOZeB3oiZ59GwIdoUmx4JLVDaq2ykqJ09YFDf9OdKnMjYel8iHr7zq/+fgvfefiUz9riYuhQ9DLzQO+WQwQMYJL2SX8jeNiACNNTF0zoPitZqXKbZZLb542wUKN9ucbR/w,iv:Yc04FHnaZfbhOmDyaY3/hePmjgWvjWmtt+B8lB8e0xQ=,tag:1nwtm1bDbVRx8frgbLNh5Q==,type:str]
|
||||||
gitea: ENC[AES256_GCM,data:8o+U4qFdyIhCPNlYyflQIuLHsQHtbT6G/a0OyCUeg9DtIeABXNVFhiy4iFRuIF0=,iv:AYwqDRNML1XuzwQnD4VmI4rKWYfTJjOjibrAbI5qgcA=,tag:UPL3UlETdkoFXLihEIGcSw==,type:str]
|
gitea: ENC[AES256_GCM,data:8o+U4qFdyIhCPNlYyflQIuLHsQHtbT6G/a0OyCUeg9DtIeABXNVFhiy4iFRuIF0=,iv:AYwqDRNML1XuzwQnD4VmI4rKWYfTJjOjibrAbI5qgcA=,tag:UPL3UlETdkoFXLihEIGcSw==,type:str]
|
||||||
shiori: ENC[AES256_GCM,data:tV7+1GusZvcli8dM86xOD71dc2mzcyfQwMeTh//LDb0=,iv:ED9wR6QjQgwd9Ll/UC5FK3CyYK3b0RniC/D6Y0nGEOI=,tag:X/aopMc2vhnRW2iTphFflQ==,type:str]
|
shiori: ENC[AES256_GCM,data:tV7+1GusZvcli8dM86xOD71dc2mzcyfQwMeTh//LDb0=,iv:ED9wR6QjQgwd9Ll/UC5FK3CyYK3b0RniC/D6Y0nGEOI=,tag:X/aopMc2vhnRW2iTphFflQ==,type:str]
|
||||||
flame: ENC[AES256_GCM,data:XsYRsA2xs+juWje2Od2Yl2xIvU0OS8xMrtwtcK/0NyyRrg==,iv:FR8lHsNQNCaOy4P+7BsIjNCz+H38i5RlwLYQ4fpB2+w=,tag:61EV7H04pcr1bSX4nSvlpw==,type:str]
|
flame: ENC[AES256_GCM,data:XsYRsA2xs+juWje2Od2Yl2xIvU0OS8xMrtwtcK/0NyyRrg==,iv:FR8lHsNQNCaOy4P+7BsIjNCz+H38i5RlwLYQ4fpB2+w=,tag:61EV7H04pcr1bSX4nSvlpw==,type:str]
|
||||||
@@ -52,7 +53,7 @@ sops:
|
|||||||
QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb
|
QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb
|
||||||
9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q==
|
9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-12-26T03:14:55Z"
|
lastmodified: "2026-02-01T21:49:36Z"
|
||||||
mac: ENC[AES256_GCM,data:gIWqEMtFkoEnFV/I4cefglnXxxr1XwON/Oiv/iHv1h5zVLvEwdGC9hyQB1KEKUEHDxWjh8GpKXn9rkZ5pncs7vZdjgiMXyVC7IAiN7uT03RfyGjPtLy7T9qqzmac2uOWLoCnda6No4VIBGG50leh5J7WDk4hKXvlm49xCwSlcLw=,iv:fVtqpXMO3klwAztFRXODLp5H9kq9LJt82Zsoq/59dTU=,tag:XTa90qDkg7ehW6xoXRwEVw==,type:str]
|
mac: ENC[AES256_GCM,data:QeEH5mof77IhB2Gr5HCKWKnNWKt529ruDvjBQHXZ0YlIxRHOtNckH0tjR4ldbDWJKhInnpe76c3IJdaE6PbEzk975dTc3YJ+WElJHbJ/9ESqXBbi5XmqxbnYUlf7cmKR+OuoVhvfqAAQl94758p7jgJTvKQFrdIthFI1PzDMU/A=,iv:sx5GX8qqYIAdR0bpNpAPu5e8cGpa4DIuIqSK6hXStZI=,tag:hf98Cs7BqLfsBl98/pvTQw==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.11.0
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user