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