From 60fbe35de3df3021fd6cd61a4458b282d0718ea1 Mon Sep 17 00:00:00 2001 From: Crony Akatsuki Date: Sun, 11 Jan 2026 14:23:02 +0100 Subject: [PATCH] feat: replace buku with selfhosted linkwarden. --- modules/cross-platform/home-manager/shell.nix | 1 - modules/cross-platform/home-manager/zsh.nix | 2 -- modules/servers/tyr/default.nix | 1 + modules/servers/tyr/dns.nix | 1 + modules/servers/tyr/linkwarden.nix | 26 +++++++++++++++++++ modules/servers/tyr/secrets.nix | 9 ++++++- secrets/linkwarden-db.age | 23 ++++++++++++++++ secrets/linkwarden.age | 23 ++++++++++++++++ secrets/secrets.nix | 2 ++ 9 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 modules/servers/tyr/linkwarden.nix create mode 100644 secrets/linkwarden-db.age create mode 100644 secrets/linkwarden.age diff --git a/modules/cross-platform/home-manager/shell.nix b/modules/cross-platform/home-manager/shell.nix index c83f5a1..660c4bb 100644 --- a/modules/cross-platform/home-manager/shell.nix +++ b/modules/cross-platform/home-manager/shell.nix @@ -14,7 +14,6 @@ age ffmpeg imagemagick - buku unzip p7zip aria2 diff --git a/modules/cross-platform/home-manager/zsh.nix b/modules/cross-platform/home-manager/zsh.nix index 9d23c6d..de94183 100644 --- a/modules/cross-platform/home-manager/zsh.nix +++ b/modules/cross-platform/home-manager/zsh.nix @@ -55,8 +55,6 @@ free = "free -mht"; # nnn on crack nnn = ''LC_COLLATE="C" nnn -xeaiH''; - # Buku powerup - b = "buku -p"; # fzf shenanigans vif = ''nvim $(fzf --preview="bat --color=always {}")''; emacs = "emacs --init-dir ~/.config/emacs"; diff --git a/modules/servers/tyr/default.nix b/modules/servers/tyr/default.nix index 0847372..9c60ba4 100644 --- a/modules/servers/tyr/default.nix +++ b/modules/servers/tyr/default.nix @@ -10,5 +10,6 @@ ./traefik.nix ./home-assistant.nix ./mosquitto.nix + ./linkwarden.nix ]; } diff --git a/modules/servers/tyr/dns.nix b/modules/servers/tyr/dns.nix index f1ea7ad..0ae8fd0 100644 --- a/modules/servers/tyr/dns.nix +++ b/modules/servers/tyr/dns.nix @@ -86,6 +86,7 @@ ''"wallos.home.cronyakatsuki.xyz IN A 192.168.0.5"'' ''"assistant.home.cronyakatsuki.xyz IN A 192.168.0.5"'' ''"ddns.home.cronyakatsuki.xyz IN A 192.168.0.5"'' + ''"linkwarden.home.cronyakatsuki.xyz IN A 192.168.0.5"'' ]; }; }; diff --git a/modules/servers/tyr/linkwarden.nix b/modules/servers/tyr/linkwarden.nix new file mode 100644 index 0000000..98e5ee1 --- /dev/null +++ b/modules/servers/tyr/linkwarden.nix @@ -0,0 +1,26 @@ +{config, ...}: { + services.linkwarden = { + enable = true; + secretFiles = { + NEXTAUTH_SECRET = config.age.secrets.linkwarden.path; + POSTGRES_PASSWORD = config.age.secrets.linkwarden-db.path; + }; + }; + + services.traefik.dynamicConfigOptions.http = { + services.linkwarden.loadBalancer.servers = [ + { + url = "http://localhost:3000"; + } + ]; + + routers.linkwarden = { + rule = "Host(`linkwarden.home.cronyakatsuki.xyz`)"; + tls = { + certResolver = "porkbun"; + }; + service = "linkwarden"; + entrypoints = "websecure"; + }; + }; +} diff --git a/modules/servers/tyr/secrets.nix b/modules/servers/tyr/secrets.nix index 33d1a67..dab0fc6 100644 --- a/modules/servers/tyr/secrets.nix +++ b/modules/servers/tyr/secrets.nix @@ -1,4 +1,4 @@ -{ +{config, ...}: { age = { secrets = { wg-tyr = { @@ -33,6 +33,13 @@ group = "nogroup"; symlink = false; }; + linkwarden = { + file = ../../../secrets/linkwarden.age; + owner = config.services.linkwarden.user; + }; + linkwarden-db = { + file = ../../../secrets/linkwarden.age; + }; }; }; } diff --git a/secrets/linkwarden-db.age b/secrets/linkwarden-db.age new file mode 100644 index 0000000..9cdc609 --- /dev/null +++ b/secrets/linkwarden-db.age @@ -0,0 +1,23 @@ +age-encryption.org/v1 +-> ssh-ed25519 2P4nKw LAG9N+gKMlkEIIIWVOmSqZB2BWMtF/FghReGmPNFxhY +2oKU1gQYIUVAB+P67FOT6BRaLi5jGPLnzOWZ9IU4xl0 +-> ssh-ed25519 l/ODWA Jln+2+SxwuW6V74CYfeTwH5svYeNlYnW5Fh2saLUeEM +ckWBbHxnhnbztU6zez/vmTNYyQ80P4/oqfaMHSe3DLY +-> ssh-ed25519 7+5K3Q /PylnaNBPbBDJywedCtS5yfQ9M6i8aw7lHKuRL3NwU8 +91EjdCrxTwhY2vLjj3N5Y+jLHHN2mZR2gs5u66iuUSU +-> ssh-ed25519 Ow0TGw ji2cRzza1QfMU4NjxLvs/FoWdOjA5zC2Two95QkBdgg +jms7qW3IRRCZBRx1JOxJai2yendpq7a5tkGKB5Xz3NA +-> ssh-ed25519 cEINMA O8qtM8rt2GtD61npXT4Uo0MTqL7WFkfAFTcNoMuG/mo +iqoqGZC3kQIm04UbB4sC0x1uAMBVL51ZZgpKdt72lkE +-> ssh-ed25519 qbMKrQ bfX7xlujcdA936Z850CEWRAp4kpwkp3TE2/eP1PXLTQ +Z/j7TN7KsZP0tDdXX4+Hn3mZPlYPvJI6ptqLfrdr+Xc +-> ssh-ed25519 Z0mAzw c0P6bG+Ofk7J+b9GPcltXY9/D0irg08JsBTYZytSj0w +goQkgQcF/dgU66yHSbpthUF8Wzxsyhuh/BWd4C5tjQw +-> ssh-ed25519 GNZYRg bCJ4Pi804hgNsS4kP0inQHCH8OO7R/rANIli7o+eNjE +k4jsFHVNQf3/bC5Ng6MQrqfHnF5EISpxPjBL7kVBJ4g +-> ssh-ed25519 fd/ZLQ 9HDKRyNfup005bDSfuNbpmLYA9KhLXQxTCKIg8SNn2Y +s+unIILVjge/bDi8p3uTp2INzFE6Yu0KZRx+A8iqUWQ +-> ssh-ed25519 zQBiZw bZs+bzLZMwTKpeSX1Krw+26LkdZWtgoYSY1idImRPBE +Ln+ScG3Umts5TPbG62SnPXsp38TcUeJIW1euKEpEczQ +--- 9CooKM8lZCPs8gU7MK1tHdKq9eP4VFByOrfu2vBLdlM +y4S`at|T==Mhͤ3&I"jKq֧!> Ȥ _wU}Cxzh`yz~oY \ No newline at end of file diff --git a/secrets/linkwarden.age b/secrets/linkwarden.age new file mode 100644 index 0000000..ee15e8c --- /dev/null +++ b/secrets/linkwarden.age @@ -0,0 +1,23 @@ +age-encryption.org/v1 +-> ssh-ed25519 2P4nKw pqHv6tVgg4NGbvJBqpIFtwydgvxhXcbjUayauscAjAM +7ndxrnbhRYFLBNkcq20M3sGk2iYTqFcUGITt2ohC3ZE +-> ssh-ed25519 l/ODWA 8CfNI/TYGc1ZEMobpMkPJPhlSPDR01g+ID+LGwFP7Ho +JNi6J2XF4AdTln0qQyazjaY20GafpZTR8WObsFbx32k +-> ssh-ed25519 7+5K3Q cl0qQz/Ka4EfCxFvS4qW/4YRtdl9xOmf+rASUD2DfEA +VbNwkI/7d7q5TG7hu5oTegoYlWM+hBrjjoserfW0cPc +-> ssh-ed25519 Ow0TGw uOqLfWmgN4qOrD8tmTvCwnWwDfG39Ah9GM4L16uqIyg +08vRLkwJDzHbVBzQLsG0UZaFshulsRmWG/3g5cgsKjE +-> ssh-ed25519 cEINMA ha346dMkU6GsPNiaM6MvNQsIjUxNt1oamBPmdp9G2HQ +VN7fuSOHj8Uq475R0CjDLUw7HmWlxJsDqXAZQydCH80 +-> ssh-ed25519 qbMKrQ LKuX+RHA/EDHYcJLRIp/R4L5vNceRH0OhwFdslDaQlI +ObAyhd9asKCy1h9c8p+RjXG1OO/HBecBR7j3Jn4IU6s +-> ssh-ed25519 Z0mAzw GIBK8Iu8f3VUVQRejIMvgxMN62Bb6+5WeUE6TOzPIHg +/peHXAP56g3H9S+LcOBSd3RsgfSXxa5KnRICCcW59tY +-> ssh-ed25519 GNZYRg E2bifEpa7bTJ+jKJ1m4hgIS4HuzhIXe2Y8pL3MlJa2M +f3Zjanf4LC4xrCO1cRP5EodxSH0qmmro10XEWerGeW0 +-> ssh-ed25519 fd/ZLQ a6y9qazlK3YPjaGFVOK14c188tULG5JwzYH9FipC/Fs +tIjxSBavgTrCMfs8YoclpAz+isvUfiU6Ow4DtONp+hU +-> ssh-ed25519 zQBiZw 1BjropucF9WfJYGaBoywU/HS7kU+wFktRqyp6liSkmM +12PJmiPbtJTZ/FC4dSDIWQfwfJqpAwsbLqF52Fqzl2Q +--- DAw1DPxqX2HWwewc56B7PLoFy15WEzSLoQKRMxHRzhw +Dp[\Տ\jlf?m1jg n3nR3#mzJĿ} `[2ȹRy=œƭtόZ6Ƈ \ No newline at end of file diff --git a/secrets/secrets.nix b/secrets/secrets.nix index f2ddce7..dcaa307 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -43,4 +43,6 @@ in { "duckdns.age".publicKeys = systems ++ users; "glance.age".publicKeys = systems ++ users; "ddns.age".publicKeys = systems ++ users; + "linkwarden.age".publicKeys = systems ++ users; + "linkwarden-db.age".publicKeys = systems ++ users; }