nixos/linux-enable-ir-emitter: init
This commit is contained in:
@@ -38,6 +38,8 @@
|
||||
|
||||
- [Howdy](https://github.com/boltgolt/howdy), a Windows Hello™ style facial authentication program for Linux.
|
||||
|
||||
- [linux-enable-ir-emitter](https://github.com/EmixamPP/linux-enable-ir-emitter), a tool used to set up IR cameras, used with Howdy.
|
||||
|
||||
- [udp-over-tcp](https://github.com/mullvad/udp-over-tcp), a tunnel for proxying UDP traffic over a TCP stream. Available as `services.udp-over-tcp`.
|
||||
|
||||
- [Komodo Periphery](https://github.com/moghtech/komodo), a multi-server Docker and Git deployment agent by Komodo. Available as [services.komodo-periphery](#opt-services.komodo-periphery.enable).
|
||||
|
||||
@@ -878,6 +878,7 @@
|
||||
./services/misc/languagetool.nix
|
||||
./services/misc/leaps.nix
|
||||
./services/misc/lifecycled.nix
|
||||
./services/misc/linux-enable-ir-emitter.nix
|
||||
./services/misc/litellm.nix
|
||||
./services/misc/llama-cpp.nix
|
||||
./services/misc/local-content-share.nix
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.linux-enable-ir-emitter;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.linux-enable-ir-emitter = {
|
||||
enable = lib.mkEnableOption "" // {
|
||||
description = ''
|
||||
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 = lib.mkPackageOption pkgs "linux-enable-ir-emitter" { } // {
|
||||
description = ''
|
||||
Package to use for the Linux Enable IR Emitter service.
|
||||
'';
|
||||
};
|
||||
|
||||
device = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "video2";
|
||||
description = ''
|
||||
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 = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
# https://github.com/EmixamPP/linux-enable-ir-emitter/blob/7e3a6527ef2efccabaeefc5a93c792628325a8db/sources/systemd/linux-enable-ir-emitter.service
|
||||
systemd.services.linux-enable-ir-emitter =
|
||||
let
|
||||
targets = [
|
||||
"suspend.target"
|
||||
"sleep.target"
|
||||
"hybrid-sleep.target"
|
||||
"hibernate.target"
|
||||
"suspend-then-hibernate.target"
|
||||
];
|
||||
in
|
||||
{
|
||||
description = "Enable the infrared emitter";
|
||||
# Added to match
|
||||
# https://github.com/EmixamPP/linux-enable-ir-emitter/blob/6.1.2/boot_service/systemd/linux-enable-ir-emitter.service
|
||||
# Prevents the program fail to detect the IR camera until a service
|
||||
# restart.
|
||||
preStart = ''
|
||||
${pkgs.kmod}/bin/modprobe uvcvideo
|
||||
sleep 1
|
||||
'';
|
||||
script = "${lib.getExe cfg.package} --verbose run";
|
||||
serviceConfig.StateDirectory = "linux-enable-ir-emitter";
|
||||
serviceConfig.LogsDirectory = "linux-enable-ir-emitter";
|
||||
|
||||
wantedBy = targets ++ [ "multi-user.target" ];
|
||||
after = targets ++ [ "dev-${cfg.device}.device" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user