From 24a224e7aa2fe2c43f52776ff052296e1b7b39d2 Mon Sep 17 00:00:00 2001 From: Samuel Shuert Date: Sat, 9 Aug 2025 16:30:00 +0000 Subject: [PATCH] feat(teal): Add kavita kavita reader is a web reading service that would let us have a web instance for all of our books Co-Authored-By: Skyler Grey --- npins/sources.json | 14 ++++++++++++++ packages/default.nix | 1 + packages/kavita/default.nix | 24 ++++++++++++++++++++++++ systems/teal/default.nix | 1 + systems/teal/kavita.nix | 24 ++++++++++++++++++++++++ 5 files changed, 64 insertions(+) create mode 100644 packages/kavita/default.nix create mode 100644 systems/teal/kavita.nix diff --git a/npins/sources.json b/npins/sources.json index cc4581f6..24b243cb 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -133,6 +133,20 @@ "url": "https://github.com/nix-community/impermanence/archive/4b3e914cdf97a5b536a889e939fb2fd2b043a170.tar.gz", "hash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=" }, + "kavita": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "kareadita", + "repo": "kavita" + }, + "branch": "feature/new-login", + "submodules": false, + "revision": "6d410baa72b9daa2d10527fd02903209ca4ba58b", + "url": "https://github.com/kareadita/kavita/archive/6d410baa72b9daa2d10527fd02903209ca4ba58b.tar.gz", + "hash": "sha256-hY2z1YP0nl4CbQBMjCywcWkj40s6UqL9Kb2r8T9mmEM=", + "frozen": true + }, "lix": { "type": "Git", "repository": { diff --git a/packages/default.nix b/packages/default.nix index c74afea6..73f0a95b 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -9,6 +9,7 @@ ./beancount-beancount_share ./beancount-smart_importer ./collabora-gtimelog + ./kavita ./lua-multipart ./OpenLinkHub ./treefmt diff --git a/packages/kavita/default.nix b/packages/kavita/default.nix new file mode 100644 index 00000000..498bfc24 --- /dev/null +++ b/packages/kavita/default.nix @@ -0,0 +1,24 @@ +{ config, ... }: +{ + config.packages.kavita = { + systems = [ "x86_64-linux" ]; + package = { fetchNpmDeps, ... }: + config.inputs.nixos-unstable.result."x86_64-linux".kavita.overrideAttrs (prev: let + version = "0.8.8"; + src = config.inputs.kavita.src // { name = "source"; }; + in { + inherit src version; + + frontend = prev.frontend.overrideAttrs (frontend-prev: { + inherit src version; + npmDepsHash = "sha256-7Bpsvqg2Vhp6/WG6o85OxX4hxZ6cd3A7iVB+H3IwbpE="; + npmDeps = fetchNpmDeps { + inherit src; + inherit (frontend-prev) sourceRoot; + name = "${frontend-prev.pname}-0.8.8-npm-deps"; + hash = "sha256-7Bpsvqg2Vhp6/WG6o85OxX4hxZ6cd3A7iVB+H3IwbpE="; + }; + }); + }); + }; +} diff --git a/systems/teal/default.nix b/systems/teal/default.nix index 0f461076..6f2d431a 100644 --- a/systems/teal/default.nix +++ b/systems/teal/default.nix @@ -11,6 +11,7 @@ ./headscale.nix ./hostname.nix ./kanidm.nix + ./kavita.nix ./networking.nix ./secrets.nix ./silverbullet.nix diff --git a/systems/teal/kavita.nix b/systems/teal/kavita.nix new file mode 100644 index 00000000..dcf523a6 --- /dev/null +++ b/systems/teal/kavita.nix @@ -0,0 +1,24 @@ +{ project, system, ... }: { + services.kavita = { + enable = true; + package = project.packages.kavita.result.${system}; + tokenKeyFile = "/secrets/kavita/tokenKeyFile"; + settings = { + port = 1032; + IpAddresses = "127.0.0.1"; + }; + }; + + services.nginx.enable = true; + services.nginx.virtualHosts."books.freshly.space" = { + addSSL = true; + enableACME = true; + acmeRoot = null; + + locations."/" = { + proxyPass = "http://127.0.0.1:1032"; + recommendedProxySettings = true; + proxyWebsockets = true; + }; + }; +}