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