1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.services.brltty;
9
10 targets = [
11 "default.target"
12 "multi-user.target"
13 "rescue.target"
14 "emergency.target"
15 ];
16
17 genApiKey = pkgs.writers.writeDash "generate-brlapi-key" ''
18 if ! test -f /etc/brlapi.key; then
19 echo -n generating brlapi key...
20 ${pkgs.brltty}/bin/brltty-genkey -f /etc/brlapi.key
21 echo done
22 fi
23 '';
24
25in
26{
27
28 options = {
29
30 services.brltty.enable = lib.mkOption {
31 type = lib.types.bool;
32 default = false;
33 description = "Whether to enable the BRLTTY daemon.";
34 };
35
36 };
37
38 config = lib.mkIf cfg.enable {
39 users.users.brltty = {
40 description = "BRLTTY daemon user";
41 group = "brltty";
42 isSystemUser = true;
43 };
44 users.groups = {
45 brltty = { };
46 brlapi = { };
47 };
48
49 systemd.services."brltty@".serviceConfig = {
50 ExecStartPre = "!${genApiKey}";
51 };
52
53 # Install all upstream-provided files
54 systemd.packages = [ pkgs.brltty ];
55 systemd.tmpfiles.packages = [ pkgs.brltty ];
56 services.udev.packages = [ pkgs.brltty ];
57 environment.systemPackages = [ pkgs.brltty ];
58
59 # Add missing WantedBys (see issue #81138)
60 systemd.paths.brltty.wantedBy = targets;
61 systemd.paths."brltty@".wantedBy = targets;
62 };
63
64}