at 23.11-pre 1.3 kB view raw
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}