diff --git a/nixos/doc/manual/release-notes/rl-2411.section.md b/nixos/doc/manual/release-notes/rl-2411.section.md index e1dc21875b0d..747765727379 100644 --- a/nixos/doc/manual/release-notes/rl-2411.section.md +++ b/nixos/doc/manual/release-notes/rl-2411.section.md @@ -190,6 +190,8 @@ - [Zapret](https://github.com/bol-van/zapret), a DPI bypass tool. Available as [services.zapret](option.html#opt-services.zapret). +- [tiny-dfr](https://github.com/WhatAmISupposedToPutHere/tiny-dfr), a dynamic function row daemon for the Touch Bar found on some Apple laptops. Available as [hardware.apple.touchBar.enable](options.html#opt-hardware.apple.touchBar.enable). + ## Backward Incompatibilities {#sec-release-24.11-incompatibilities} - The `sound` options have been removed or renamed, as they had a lot of unintended side effects. See [below](#sec-release-24.11-migration-sound) for details. diff --git a/nixos/modules/hardware/apple-touchbar.nix b/nixos/modules/hardware/apple-touchbar.nix new file mode 100644 index 000000000000..700ef173a907 --- /dev/null +++ b/nixos/modules/hardware/apple-touchbar.nix @@ -0,0 +1,43 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.hardware.apple.touchBar; + format = pkgs.formats.toml { }; + cfgFile = format.generate "config.toml" cfg.settings; +in +{ + options.hardware.apple.touchBar = { + enable = lib.mkEnableOption "support for the Touch Bar on some Apple laptops using tiny-dfr"; + package = lib.mkPackageOption pkgs "tiny-dfr" { }; + + settings = lib.mkOption { + type = format.type; + default = { }; + description = '' + Configuration for tiny-dfr. See [example configuration][1] for available options. + + [1]: https://github.com/WhatAmISupposedToPutHere/tiny-dfr/blob/master/share/tiny-dfr/config.toml + ''; + example = lib.literalExpression '' + { + MediaLayerDefault = true; + ShowButtonOutlines = false; + EnablePixelShift = true; + } + ''; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.packages = [ cfg.package ]; + services.udev.packages = [ cfg.package ]; + + environment.etc."tiny-dfr/config.toml".source = cfgFile; + systemd.services.tiny-dfr.restartTriggers = [ cfgFile ]; + }; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index e84580f8f0f1..53a8648b900b 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -48,6 +48,7 @@ ./config/zram.nix ./hardware/acpilight.nix ./hardware/all-firmware.nix + ./hardware/apple-touchbar.nix ./hardware/bladeRF.nix ./hardware/brillo.nix ./hardware/ckb-next.nix