mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-10 09:43:30 +01:00
85 lines
2.1 KiB
Nix
85 lines
2.1 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.services.spoolman;
|
|
in
|
|
{
|
|
|
|
options.services.spoolman = {
|
|
|
|
enable = lib.mkEnableOption "Spoolman, a filament spool inventory management system.";
|
|
|
|
environment = lib.mkOption {
|
|
type = lib.types.attrs;
|
|
default = { };
|
|
example = {
|
|
SPOOLMAN_DB_TYPE = "sqlite";
|
|
SPOOLMAN_LOGGING_LEVEL = "DEBUG";
|
|
SPOOLMAN_AUTOMATIC_BACKUP = "TRUE";
|
|
SPOOLMAN_BASE_PATH = "/spoolman";
|
|
SPOOLMAN_METRICS_ENABLED = "TRUE";
|
|
SPOOLMAN_CORS_ORIGIN = "source1.domain.com:p1, source2.domain.com:p2";
|
|
};
|
|
description = ''
|
|
Environment variables to be passed to the spoolman service.
|
|
Refer to https://github.com/Donkie/Spoolman/blob/master/.env.example for details on supported variables.
|
|
'';
|
|
};
|
|
|
|
openFirewall = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
Open the appropriate ports in the firewall for spoolman.
|
|
'';
|
|
};
|
|
|
|
listen = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "127.0.0.1";
|
|
example = "0.0.0.0";
|
|
description = "The IP address to bind the spoolman server to.";
|
|
};
|
|
|
|
port = lib.mkOption {
|
|
type = lib.types.port;
|
|
default = 7912;
|
|
description = ''
|
|
TCP port where spoolman web-gui listens.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
|
|
systemd.services.spoolman = {
|
|
description = "A self-hosted filament spool inventory management system";
|
|
wantedBy = [ "multi-user.target" ];
|
|
environment = {
|
|
SPOOLMAN_DIR_DATA = "/var/lib/spoolman";
|
|
}
|
|
// cfg.environment;
|
|
serviceConfig = lib.mkMerge [
|
|
{
|
|
DynamicUser = true;
|
|
ExecStart = "${pkgs.spoolman}/bin/spoolman --host ${cfg.listen} --port ${toString cfg.port}";
|
|
StateDirectory = "spoolman";
|
|
}
|
|
];
|
|
};
|
|
|
|
networking.firewall = lib.mkIf cfg.openFirewall {
|
|
allowedTCPPorts = lib.optional (cfg.listen != "127.0.0.1") cfg.port;
|
|
};
|
|
|
|
};
|
|
meta = {
|
|
maintainers = with lib.maintainers; [ MayNiklas ];
|
|
};
|
|
}
|