mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
Some files don't need nesting and can be root level again to reduce conflicts with other PRs. Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
82 lines
1.8 KiB
Nix
82 lines
1.8 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (lib) mkOption types;
|
|
|
|
cfg = config.services.signaturepdf;
|
|
extraConfigToArgs =
|
|
extraConfig:
|
|
lib.flatten (
|
|
lib.mapAttrsToList (name: value: [
|
|
"-d"
|
|
"${name}=${value}"
|
|
]) extraConfig
|
|
);
|
|
in
|
|
{
|
|
meta.maintainers = [ lib.maintainers.DamienCassou ];
|
|
|
|
options.services.signaturepdf = {
|
|
enable = lib.mkEnableOption "signaturepdf; signing, organizing, editing metadatas or compressing PDFs";
|
|
|
|
package = lib.mkPackageOption pkgs "signaturepdf" { };
|
|
|
|
port = mkOption {
|
|
type = types.port;
|
|
default = 8080;
|
|
example = 8081;
|
|
description = "The port on which the application runs";
|
|
};
|
|
|
|
extraConfig = mkOption {
|
|
default = { };
|
|
type =
|
|
with types;
|
|
let
|
|
primitive = oneOf [
|
|
str
|
|
int
|
|
bool
|
|
float
|
|
];
|
|
in
|
|
attrsOf primitive;
|
|
example = {
|
|
upload_max_filesize = "24M";
|
|
post_max_size = "24M";
|
|
max_file_uploads = "201";
|
|
};
|
|
description = "Additional configuration optional.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
xdg.desktopEntries = {
|
|
signaturepdf = {
|
|
name = "SignaturePDF";
|
|
exec = "${pkgs.xdg-utils}/bin/xdg-open http://localhost:${toString cfg.port}";
|
|
terminal = false;
|
|
icon = "${cfg.package}/share/signaturepdf/public/favicon.ico";
|
|
};
|
|
};
|
|
|
|
systemd.user.services.signaturepdf = {
|
|
Unit = {
|
|
Description = "signaturepdf; signing, organizing, editing metadatas or compressing PDFs";
|
|
};
|
|
|
|
Service = {
|
|
ExecStart = "${cfg.package}/bin/signaturepdf ${toString cfg.port} ${lib.escapeShellArgs (extraConfigToArgs cfg.extraConfig)}";
|
|
};
|
|
|
|
Install = {
|
|
WantedBy = [ "default.target" ];
|
|
};
|
|
};
|
|
};
|
|
}
|