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