copy nb configuration and modules
This commit is contained in:
45
utils/modules/howdy/config.nix
Normal file
45
utils/modules/howdy/config.nix
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
core = {
|
||||
detection_notice = false;
|
||||
timeout_notice = true;
|
||||
no_confirmation = false;
|
||||
suppress_unknown = false;
|
||||
abort_if_ssh = true;
|
||||
abort_if_lid_closed = true;
|
||||
disabled = false;
|
||||
use_cnn = false;
|
||||
workaround = "off";
|
||||
};
|
||||
|
||||
video = {
|
||||
certainty = 3.5;
|
||||
timeout = 4;
|
||||
device_path = "/dev/video2";
|
||||
warn_no_device = true;
|
||||
max_height = 320;
|
||||
frame_width = -1;
|
||||
frame_height = -1;
|
||||
dark_threshold = 60;
|
||||
recording_plugin = "opencv";
|
||||
device_format = "v4l2";
|
||||
force_mjpeg = false;
|
||||
exposure = -1;
|
||||
rotate = 0;
|
||||
};
|
||||
|
||||
snapshots = {
|
||||
save_failed = false;
|
||||
save_successful = false;
|
||||
};
|
||||
|
||||
rubberstamps = {
|
||||
enabled = false;
|
||||
stamp_rules = "nod 5s failsafe min_distance=12";
|
||||
};
|
||||
|
||||
debug = {
|
||||
end_report = false;
|
||||
verbose_stamps = false;
|
||||
gtk_stdout = false;
|
||||
};
|
||||
}
|
||||
123
utils/modules/howdy/default.nix
Normal file
123
utils/modules/howdy/default.nix
Normal file
@@ -0,0 +1,123 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
pam-rule = pkgs.lib.mkDefault (pkgs.lib.mkBefore
|
||||
''
|
||||
auth sufficient pam_unix.so try_first_pass nullok
|
||||
auth sufficient ${config.services.howdy.package}/lib/security/pam_howdy.so
|
||||
'');
|
||||
pam-sudo-rule = pkgs.lib.mkDefault (pkgs.lib.mkBefore
|
||||
''
|
||||
auth sufficient ${config.services.howdy.package}/lib/security/pam_howdy.so
|
||||
'');
|
||||
cfg = config.services.howdy;
|
||||
irCfg = config.services.linux-enable-ir-emitter;
|
||||
settingsType = pkgs.formats.ini { };
|
||||
in {
|
||||
options = {
|
||||
services.howdy = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable howdy and PAM module for face recognition.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.howdy;
|
||||
defaultText = "pkgs.howdy";
|
||||
description = ''
|
||||
Howdy package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
inherit (settingsType) type;
|
||||
default = import ./config.nix;
|
||||
description = mdDoc ''
|
||||
Howdy configuration file. Refer to
|
||||
<https://github.com/boltgolt/howdy/blob/beta/howdy/src/config.ini>
|
||||
for options.
|
||||
'';
|
||||
};
|
||||
};
|
||||
services.linux-enable-ir-emitter = {
|
||||
enable = mkEnableOption (mdDoc "") // {
|
||||
description = mdDoc ''
|
||||
Whether to enable IR emitter hardware. Designed to be used with the
|
||||
Howdy facial authentication. After enabling the service, configure
|
||||
the emitter with `sudo linux-enable-ir-emitter configure`.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkPackageOptionMD pkgs "linux-enable-ir-emitter" {} // {
|
||||
description = mdDoc ''
|
||||
Package to use for the Linux Enable IR Emitter service.
|
||||
'';
|
||||
};
|
||||
|
||||
device = mkOption {
|
||||
type = types.str;
|
||||
default = "video2";
|
||||
description = mdDoc ''
|
||||
IR camera device to depend on. For example, for `/dev/video2`
|
||||
the value would be `video2`. Find this with the command
|
||||
{command}`realpath /dev/v4l/by-path/<generated-driver-name>`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# environment.systemPackages = [ cfg.package pkgs.ir_toggle ];
|
||||
# environment.etc."howdy/config.ini".source = configINI;
|
||||
# security.pam.services = {
|
||||
# sudo.text = pam-rule; # Sudo
|
||||
# login.text = pam-rule; # User login
|
||||
# polkit-1.text = pam-rule; # PolKit
|
||||
# i3lock.text = pam-rule; # i3lock
|
||||
# };
|
||||
# powerManagement.resumeCommands =
|
||||
# "${pkgs.ir_toggle}/bin/chicony-ir-toggle on";
|
||||
# services.udev.packages = [ pkgs.ir_toggle ];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
environment.systemPackages = [ cfg.package irCfg.package ];
|
||||
|
||||
security.pam.services = {
|
||||
sudo.text = pam-sudo-rule; # Sudo
|
||||
login.text = pam-rule; # User login
|
||||
polkit-1.text = pam-rule; # PolKit
|
||||
swaylock.text = pam-rule; # i3lock
|
||||
# gdm-password.text = pam-rule; # i3lock
|
||||
};
|
||||
|
||||
systemd.services.linux-enable-ir-emitter = rec {
|
||||
description = "Enable the infrared emitter";
|
||||
script = "${getExe irCfg.package} run";
|
||||
|
||||
wantedBy = [
|
||||
"multi-user.target"
|
||||
"suspend.target"
|
||||
"hybrid-sleep.target"
|
||||
"hibernate.target"
|
||||
"suspend-then-hibernate.target"
|
||||
];
|
||||
after = wantedBy ++ [ "dev-${irCfg.device}.device" ];
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /var/lib/linux-enable-ir-emitter 0755 root root - -"
|
||||
];
|
||||
environment.etc."linux-enable-ir-emitter".source = "/var/lib/linux-enable-ir-emitter";
|
||||
environment.etc."howdy/config.ini".source = settingsType.generate "howdy-config.ini" cfg.settings;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user