Add grimmory as new library provider

This commit is contained in:
TheWanderingCrow 2026-03-31 15:54:55 -04:00
parent 5c6f1c622d
commit 6b297f49d6
5 changed files with 67 additions and 42 deletions

8
flake.lock generated
View file

@ -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"
},

View file

@ -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"
];
};
};

View file

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

View file

@ -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"
];
};
};
};
}

View file

@ -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"
];
};
};
};
}