CrOS/modules/quadlets/grimmory/default.nix
2026-04-01 11:47:21 -04:00

59 lines
1.4 KiB
Nix

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