From 6b297f49d694c4c634eb1779a72d97dab88c77a1 Mon Sep 17 00:00:00 2001 From: TheWanderingCrow Date: Tue, 31 Mar 2026 15:54:55 -0400 Subject: [PATCH] Add grimmory as new library provider --- flake.lock | 8 ++-- hosts/nixos/HandlerOne/backup.nix | 2 + hosts/nixos/HandlerOne/default.nix | 3 +- modules/quadlets/grimmory/default.nix | 59 +++++++++++++++++++++++++++ modules/quadlets/kavita/default.nix | 37 ----------------- 5 files changed, 67 insertions(+), 42 deletions(-) create mode 100644 modules/quadlets/grimmory/default.nix delete mode 100644 modules/quadlets/kavita/default.nix diff --git a/flake.lock b/flake.lock index ca4a0f8..1abc305 100644 --- a/flake.lock +++ b/flake.lock @@ -311,11 +311,11 @@ ] }, "locked": { - "lastModified": 1774732252, - "narHash": "sha256-10e3s1YXcSluMcmXuikumCATrYipGhSVs21v2Hbof9U=", + "lastModified": 1774986869, + "narHash": "sha256-F6vpN/1QKHGeedOqPki+/ipcuGqjFjxmSFzO00GMMh0=", "ref": "refs/heads/prod", - "rev": "5ce77ac9f17a0f0c2daabfbaf294d46b966d4f40", - "revCount": 205, + "rev": "2bf5043b4d108be6e2d80e56fe8ba693c5f5a574", + "revCount": 206, "type": "git", "url": "ssh://forgejo@git.wanderingcrow.net/TheWanderingCrow/nix-secrets" }, diff --git a/hosts/nixos/HandlerOne/backup.nix b/hosts/nixos/HandlerOne/backup.nix index 8b94ef8..0b0c3fb 100644 --- a/hosts/nixos/HandlerOne/backup.nix +++ b/hosts/nixos/HandlerOne/backup.nix @@ -64,6 +64,7 @@ in "/var/lib/tuwunel" "/var/lib/paperless/export" "/var/lib/octoprint" + "/var/lib/grimmory" ]; }; hetzner-handlerone = restic-default // { @@ -93,6 +94,7 @@ in "/var/lib/tuwunel" "/var/lib/paperless/export" "/var/lib/octoprint" + "/var/lib/grimmory" ]; }; }; diff --git a/hosts/nixos/HandlerOne/default.nix b/hosts/nixos/HandlerOne/default.nix index ed8f231..c717869 100644 --- a/hosts/nixos/HandlerOne/default.nix +++ b/hosts/nixos/HandlerOne/default.nix @@ -17,6 +17,7 @@ # FIXME(TODO): Turn this into it's own backup module ./backup.nix + ./database.nix # Disks inputs.disko.nixosModules.disko @@ -43,7 +44,7 @@ "modules/quadlets" "modules/quadlets/frigate" "modules/quadlets/actualbudget" - "modules/quadlets/kavita" + "modules/quadlets/grimmory" # Hosted services "modules/services/system-logging/prometheus-server.nix" diff --git a/modules/quadlets/grimmory/default.nix b/modules/quadlets/grimmory/default.nix new file mode 100644 index 0000000..9314992 --- /dev/null +++ b/modules/quadlets/grimmory/default.nix @@ -0,0 +1,59 @@ +{ config, lib, ... }: +let + port = lib.custom.autoport "grimmory"; +in +{ + + sops.secrets = { + "mariadb/users/grimmory" = {}; + }; + + sops.templates."grimmory-secrets".content = '' + DATABASE_PASSWORD=${config.sops.placeholder."mariadb/users/grimmory"} + ''; + + services.mysql = { + ensureDatabases = [ + "grimmory" + ]; + }; + + systemd.tmpfiles.rules = [ + "d /var/lib/grimmory 774 1000 1000" + "d /var/lib/grimmory/data 774 1000 1000" + "d /var/lib/grimmory/books 774 1000 1000" + "d /var/lib/grimmory/bookdrop 774 1000 1000" + ]; + + services.caddy.virtualHosts."library.wanderingcrow.net".extraConfig = '' + reverse_proxy http://localhost:${builtins.toString port} + ''; + + virtualisation.quadlet = { + containers = { + grimmory.containerConfig = { + image = "grimmory/grimmory:latest"; + publishPorts = [ + "${builtins.toString port}:6060" + ]; + environments = { + TZ="Etc/UTC"; + APP_USER_ID="1000"; + APP_GROUP_ID="1000"; + BOOKLORE_PORT="6060"; + + DATABASE_URL="jdbc:mariadb://host.containers.internal:3306/grimmory"; + DATABASE_USERNAME="grimmory"; + }; + environmentFiles = [ + config.sops.templates."grimmory-secrets".path + ]; + volumes = [ + "/var/lib/grimmory/data:/app/data" + "/var/lib/grimmory/books:/books" + "/var/lib/grimmory/bookdrop:/bookdrop" + ]; + }; + }; + }; +} diff --git a/modules/quadlets/kavita/default.nix b/modules/quadlets/kavita/default.nix deleted file mode 100644 index 7bda3b8..0000000 --- a/modules/quadlets/kavita/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ lib, ... }: -let - port = lib.custom.autoport "kavita"; -in -{ - systemd.tmpfiles.rules = [ - "d /var/lib/kavita" - "d /var/lib/kavita/config" - "d /var/lib/kavita/manga" - "d /var/lib/kavita/comics" - "d /var/lib/kavita/books" - ]; - - services.caddy.virtualHosts."library.wanderingcrow.net".extraConfig = '' - reverse_proxy http://localhost:${builtins.toString port} - ''; - - virtualisation.quadlet = { - containers = { - kavita.containerConfig = { - image = "ghcr.io/kareadita/kavita:latest"; - publishPorts = [ - "${builtins.toString port}:5000" - ]; - environments = { - TZ="America/New_York"; - }; - volumes = [ - "/var/lib/kavita/config:/kavita/config" - "/var/lib/kavita/manga:/manga" - "/var/lib/kavita/comics:/comics" - "/var/lib/kavita/books:/books" - ]; - }; - }; - }; -}