74 lines
2.2 KiB
Nix
Raw Permalink Normal View History

2024-01-09 23:11:11 -05:00
# Paperless-ngx is a document scanning and management solution.
2024-04-20 09:42:06 -04:00
{ config, lib, ... }:
2025-01-20 22:35:40 -05:00
let
cfg = config.nmasur.presets.services.paperless;
in
2024-04-20 09:42:06 -04:00
{
2025-01-20 22:35:40 -05:00
options.nmasur.presets.services.paperless.enable =
lib.mkEnableOption "Paperless-ngx document manager";
config = lib.mkIf cfg.enable {
services.paperless = {
2025-01-20 22:35:40 -05:00
enable = true;
mediaDir = "/data/generic/paperless";
passwordFile = config.secrets.paperless.dest;
settings = {
2024-04-20 09:42:06 -04:00
PAPERLESS_OCR_USER_ARGS = builtins.toJSON { invalidate_digital_signatures = true; };
# Enable if changing the path name in Caddy
# PAPERLESS_FORCE_SCRIPT_NAME = "/paperless";
# PAPERLESS_STATIC_URL = "/paperless/static/";
};
};
2024-01-21 02:13:10 +00:00
# Allow Nextcloud and user to see files
2024-04-20 09:42:06 -04:00
users.users.nextcloud.extraGroups = lib.mkIf config.services.nextcloud.enable [ "paperless" ];
2024-01-21 02:13:10 +00:00
users.users.${config.user}.extraGroups = [ "paperless" ];
2024-04-20 09:42:06 -04:00
caddy.routes = [
{
match = [
{
host = [ config.hostnames.paperless ];
# path = [ "/paperless*" ]; # Change path name in Caddy
}
];
handle = [
{
handler = "reverse_proxy";
upstreams = [ { dial = "localhost:${builtins.toString config.services.paperless.port}"; } ];
}
];
}
];
# Configure Cloudflare DNS to point to this machine
services.cloudflare-dyndns.domains = [ config.hostnames.paperless ];
secrets.paperless = {
source = ../../../private/prometheus.age;
dest = "${config.secretsDirectory}/paperless";
owner = "paperless";
group = "paperless";
permissions = "0440";
};
systemd.services.paperless-secret = {
requiredBy = [ "paperless.service" ];
before = [ "paperless.service" ];
};
# Fix paperless shared permissions
systemd.services.paperless-web.serviceConfig.UMask = lib.mkForce "0026";
2024-04-20 09:42:06 -04:00
systemd.services.paperless-scheduler.serviceConfig.UMask = lib.mkForce "0026";
systemd.services.paperless-task-queue.serviceConfig.UMask = lib.mkForce "0026";
# Backups
services.restic.backups.default.paths = [ "/data/generic/paperless/documents" ];
};
}