nixos/preload: init
[NixPkgs.git] / nixos / modules / services / hardware / tuxedo-rs.nix
blob0daccfef3a5303a10f498240d49271c13ddb2a5d
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.hardware.tuxedo-rs;
8 in
10   options = {
11     hardware.tuxedo-rs = {
12       enable = mkEnableOption (lib.mdDoc "Rust utilities for interacting with hardware from TUXEDO Computers");
14       tailor-gui.enable = mkEnableOption (lib.mdDoc "tailor-gui, an alternative to TUXEDO Control Center, written in Rust");
15     };
16   };
18   config = mkIf cfg.enable (mkMerge [
19     {
20       hardware.tuxedo-keyboard.enable = true;
22       systemd = {
23         services.tailord = {
24           enable = true;
25           description = "Tuxedo Tailor hardware control service";
26           after = [ "systemd-logind.service" ];
27           wantedBy = [ "multi-user.target" ];
29           serviceConfig = {
30             Type = "dbus";
31             BusName = "com.tux.Tailor";
32             ExecStart = "${pkgs.tuxedo-rs}/bin/tailord";
33             Environment = "RUST_BACKTRACE=1";
34             Restart = "on-failure";
35           };
36         };
37       };
39       services.dbus.packages = [ pkgs.tuxedo-rs ];
41       environment.systemPackages = [ pkgs.tuxedo-rs ];
42     }
43     (mkIf cfg.tailor-gui.enable {
44       environment.systemPackages = [ pkgs.tailor-gui ];
45     })
46   ]);
48   meta.maintainers = with maintainers; [ mrcjkb ];