From 3d2a47ec7931c761a87701b194a081965ac2a73e Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:55:36 +1100 Subject: [PATCH 1/2] feat: install kavita --- modules/nixos/bundles/server.nix | 1 + modules/nixos/features/kavita.nix | 25 +++++++++++++++++++++++++ secrets/kavita.age | Bin 0 -> 521 bytes secrets/secrets.nix | 1 + 4 files changed, 27 insertions(+) create mode 100644 modules/nixos/features/kavita.nix create mode 100644 secrets/kavita.age diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 210735e..a084543 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -12,6 +12,7 @@ "immich" "jellyfin" "karakeep" + "kavita" "lidarr" "miniflux" "nginx" diff --git a/modules/nixos/features/kavita.nix b/modules/nixos/features/kavita.nix new file mode 100644 index 0000000..c62259e --- /dev/null +++ b/modules/nixos/features/kavita.nix @@ -0,0 +1,25 @@ +{ + config, + ... +}: +let + port = 5015; +in +{ + services = { + kavita = { + enable = true; + dataDir = "/srv/kavita"; + settings.Port = port; + tokenKeyFile = config.age.secrets.kavita.path; + }; + + nginx.virtualHosts."kavita.fi33.buzz" = { + forceSSL = true; + useACMEHost = "fi33.buzz"; + locations."/".proxyPass = "http://localhost:${toString port}"; + }; + }; + + age.secrets.kavita.file = ../../../secrets/kavita.age; +} diff --git a/secrets/kavita.age b/secrets/kavita.age new file mode 100644 index 0000000000000000000000000000000000000000..97f3de850e05cf85dd0a3d49f77d52de0835240c GIT binary patch literal 521 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH^a;^+2~-F%F)ufa z2=ofi%6HH3GjuAlaL+2&&a4VCD{^yok1$Ru$;x)g&oNAOcH|1m&I&0@O|~ow2r~D~ zarDfHND0Yx^+|EgNYPIAt;kMJFYqfg3=b;JN=CQMT)QHuGEl*|)F{t9Bf{At&_LVE zI3gp>-6%IQ-NLD$pfJfRr=-L?pt34E!_42P!hp*tJt;Lc(l0%!(kL*$)FaZ{&&@X@ z-^eu7BqdclLc2K3(77NbpxDo^#24K*pAv7&%0Pw4C}(FUmz4BW&vK{2qDn8H5aSdJ zXYI^j^T6wnLqji< zFdxIxTrbl+PapGw@_a5`U0nsEfK-bJGuOlj_f)4+gPPa=@4@X?I&^nD ze_wTi{UHNyXfj)2)pu$3KVtc8y+4Id%Dp&JCt!He`%ls5j!x-XQ;w6BnOD~T<7!U7 mYnwg4GbcIq_Sxr8j;`G~ecM-KUdB~odRIHz<~c8zdKUmPg19aK literal 0 HcmV?d00001 diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 74ef3d4..7f26d4e 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -20,6 +20,7 @@ in "copyparty-will.age".publicKeys = users; "immich.age".publicKeys = users; "jellyfin.age".publicKeys = users; + "kavita.age".publicKeys = users; "lidarr.age".publicKeys = users; "miniflux-creds.age".publicKeys = users; "paperless.age".publicKeys = users; From ea62d6906056907d60ce694c34433b5577d413e0 Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:47:09 +1100 Subject: [PATCH 2/2] feat: add kavita to dashboard --- modules/nixos/features/homepage-dashboard.nix | 13 +++++++++++++ secrets/kavita-api.age | Bin 0 -> 469 bytes secrets/secrets.nix | 1 + 3 files changed, 14 insertions(+) create mode 100644 secrets/kavita-api.age diff --git a/modules/nixos/features/homepage-dashboard.nix b/modules/nixos/features/homepage-dashboard.nix index 42a4f2a..8d0a871 100644 --- a/modules/nixos/features/homepage-dashboard.nix +++ b/modules/nixos/features/homepage-dashboard.nix @@ -25,6 +25,7 @@ let # keep-sorted start "immich" "jellyfin" + "kavita-api" "lidarr" "miniflux" "paperless" @@ -155,6 +156,18 @@ in }; }; } + { + "Kavita" = { + "description" = "Book reader"; + "icon" = "kavita.svg"; + "href" = "https://kavita.fi33.buzz/"; + "widget" = { + "type" = "kavita"; + "url" = "https://kavita.fi33.buzz/"; + "key" = "@kavita-api@"; + }; + }; + } { "Miniflux" = { "description" = "RSS aggregator"; diff --git a/secrets/kavita-api.age b/secrets/kavita-api.age new file mode 100644 index 0000000000000000000000000000000000000000..0422408b32a713877aa84bb04b6c76feb99b64cd GIT binary patch literal 469 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH^a;^+2~^OoC^e`o zHw!58DJk%;D#=VKHj0c&&v3~qGBWZs&JE1-N(~Loh)nm(bma;R$<{UtD9cDH%5o}k zb;>S_N{uMzJE6}sT-ypIqP2b0O((>9+HZ_CO+g#wTK5JTro=lm+?vPjnm@4QfxtZe^+ zh?Ml?loFHtbmu&$;ym*peedvcF5|EqpN!n{?BuM}G~fK-z?6zWg95kUEXR;+A4hLb zXZQ5voI;~Cw=fF>E?r$+1rw9pva~Fdd>`{fPc!GBz?4GEkO0G^KrctbEd3Duq%hZ9 z$Fd^l(6A5#F1wVR9S1MG<5^($yzIQCv?^yYOxx7Je9Tq+mw2bmr?2rJA^