# NixOS module for Voculinux. # # The flake wraps this file and injects the flake-built package as the # default (programs.voculinux.package), so importing the module through # nixosModules.voculinux needs no extra wiring. Imported on its own, set # programs.voculinux.package to a voculinux derivation. # # What it cannot do for you: membership in the "input" group is per-user, # so the module documents it and each user opts in: # # users.users..extraGroups = [ "input" "uinput" ]; # # "input" grants read access to every keyboard and pointer device — the # evdev global-shortcut backend needs it on Wayland. X11 sessions need none # of this. See docs/INSTALL.md for the same notes the deb/rpm carry. { config, lib, pkgs, ... }: let cfg = config.programs.voculinux; in { options.programs.voculinux = { enable = lib.mkEnableOption "Voculinux voice dictation"; package = lib.mkOption { type = lib.types.package; defaultText = "the package built by the voculinux flake"; description = "The voculinux package to install."; }; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; # /dev/uinput is what ydotool (native Wayland typing) and the evdev # backend's keyboard clone open. The option loads the module, creates # the "uinput" group and installs the matching udev rule. hardware.uinput.enable = true; }; }