Added module for scanbd
This commit is contained in:
parent
668d7e83b0
commit
8394729396
|
@ -3,5 +3,6 @@
|
|||
#./gotosocial.nix
|
||||
./matrix-alertmanager-receiver.nix
|
||||
#./mealie.nix
|
||||
./scanbd.nix
|
||||
];
|
||||
}
|
||||
|
|
134
modules/scanbd.nix
Normal file
134
modules/scanbd.nix
Normal file
|
@ -0,0 +1,134 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.scanbd;
|
||||
configDir = "/etc/scanbd";
|
||||
|
||||
scanbdConf = pkgs.writeText "scanbd.conf"
|
||||
''
|
||||
global {
|
||||
debug = true
|
||||
debug-level = ${toString cfg.debugLevel}
|
||||
user = ${cfg.user}
|
||||
group = ${cfg.group}
|
||||
scriptdir = ${configDir}/scripts
|
||||
pidfile = ${cfg.pidFile}
|
||||
timeout = ${toString cfg.timeOut}
|
||||
environment {
|
||||
device = "SCANBD_DEVICE"
|
||||
action = "SCANBD_ACTION"
|
||||
}
|
||||
multiple_actions = true
|
||||
${cfg.extraConfig}
|
||||
}
|
||||
'';
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
options = {
|
||||
|
||||
services.scanbd.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable support for scanbd (scanner button daemon).
|
||||
|
||||
<note><para>
|
||||
If scanbd is enabled, then saned must be disabled.
|
||||
</para></note>
|
||||
'';
|
||||
};
|
||||
|
||||
services.scanbd.user = mkOption {
|
||||
type = types.str;
|
||||
default = "scanner";
|
||||
example = "";
|
||||
description = ''
|
||||
scanbd daemon user name.
|
||||
'';
|
||||
};
|
||||
|
||||
services.scanbd.group = mkOption {
|
||||
type = types.str;
|
||||
default = "scanner";
|
||||
example = "";
|
||||
description = ''
|
||||
scanbd daemon group name.
|
||||
'';
|
||||
};
|
||||
|
||||
services.scanbd.extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = ''
|
||||
device canon {
|
||||
filter = "^genesys.*"
|
||||
desc = "Canon LIDE"
|
||||
action file {
|
||||
filter = "^file.*"
|
||||
desc = "File"
|
||||
script = "copy.script"
|
||||
}
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Extra configuration lines included verbatim in scanbd.conf.
|
||||
Use e.g. in lieu of including device-specific config templates
|
||||
under scanner.d/
|
||||
'';
|
||||
};
|
||||
|
||||
services.scanbd.pidFile = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/run/scanbd.pid";
|
||||
example = "";
|
||||
description = ''
|
||||
PID file path.
|
||||
'';
|
||||
};
|
||||
|
||||
services.scanbd.timeOut = mkOption {
|
||||
type = types.int;
|
||||
default = 500;
|
||||
example = "";
|
||||
description = ''
|
||||
Device polling timeout (in ms).
|
||||
'';
|
||||
};
|
||||
|
||||
services.scanbd.debugLevel = mkOption {
|
||||
type = types.int;
|
||||
default = 3;
|
||||
example = "";
|
||||
description = ''
|
||||
Debug logging (1=error, 2=warn, 3=info, 4-7=debug)
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf config.services.scanbd.enable {
|
||||
|
||||
users.groups.scanner.gid = config.ids.gids.scanner;
|
||||
users.users.scanner = {
|
||||
uid = config.ids.uids.scanner;
|
||||
group = "scanner";
|
||||
};
|
||||
|
||||
environment.etc."scanbd/scanbd.conf".source = scanbdConf;
|
||||
environment.etc."scanbd/scripts/test.script".source = "${pkgs.scanbd}/etc/scanbd/test.script";
|
||||
|
||||
systemd.services.scanbd = {
|
||||
description = "Scanner button polling service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
aliases=["dbus-de.kmux.scanbd.server.service"];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.scanbd}/bin/scanbd -f -c ${configDir}/scanbd.conf";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue