linkwarden

This commit is contained in:
Danilo Reyes
2026-02-01 16:07:19 -06:00
parent b7eab2dd94
commit 32545e4fec
5 changed files with 100 additions and 62 deletions

View File

@@ -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,41 @@ 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"
"readeck"
"vaultwarden"
]; ];
} }

View File

@@ -6,34 +6,35 @@
}: }:
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"
"readeck"
"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"

View 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;
port = 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;
name = cfg.name;
user = cfg.name;
createLocally = true;
};
};
};
}

View File

@@ -27,20 +27,21 @@ 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"
"readeck"
"ryot"
"shiori"
"sonarqube"
"vaultwarden"
"webref" "webref"
]; ];
in in

View File

@@ -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