nixos/preload: init
[NixPkgs.git] / nixos / modules / services / hardware / brltty.nix
blob3133804f485f631efecc49029e8870ade9ca495f
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.brltty;
8   targets = [
9     "default.target" "multi-user.target"
10     "rescue.target" "emergency.target"
11   ];
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   '';
21 in {
23   options = {
25     services.brltty.enable = mkOption {
26       type = types.bool;
27       default = false;
28       description = lib.mdDoc "Whether to enable the BRLTTY daemon.";
29     };
31   };
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     };
43     systemd.services."brltty@".serviceConfig =
44       { ExecStartPre = "!${genApiKey}"; };
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 ];
52     # Add missing WantedBys (see issue #81138)
53     systemd.paths.brltty.wantedBy = targets;
54     systemd.paths."brltty@".wantedBy = targets;
55   };