Write iptsd configuration file.

This commit is contained in:
Ivor Wanders 2023-11-26 15:44:14 -05:00 committed by mergify[bot]
parent 4461209624
commit b236a7817a

View file

@ -1,18 +1,39 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
inherit (lib) mkDefault mkEnableOption mkIf mkMerge; inherit (lib) mkDefault mkEnableOption mkIf mkMerge mkOption types;
cfg = config.microsoft-surface.ipts; cfg = config.microsoft-surface.ipts;
in { iptsConfFile = pkgs.writeTextFile {
name = "iptsd.conf";
text = lib.generators.toINI { } cfg.config;
};
in
{
options.microsoft-surface.ipts = { options.microsoft-surface.ipts = {
enable = mkEnableOption "Enable IPTSd for Microsoft Surface"; enable = mkEnableOption "Enable IPTSd for Microsoft Surface";
config = mkOption {
type = types.attrs;
default = { };
description = ''
Values to wrote to iptsd.conf, first key is section, second key is property.
See the example config; https://github.com/linux-surface/iptsd/blob/v1.4.0/etc/iptsd.conf
'';
example = ''
DFT = {
ButtonMinMag = 1000;
};
'';
};
}; };
config = mkMerge [ config = mkMerge [
{ {
microsoft-surface.ipts.enable = mkDefault false; microsoft-surface.ipts.enable = mkDefault false;
} }
(mkIf cfg.enable { (mkIf cfg.enable {
@ -22,6 +43,8 @@ in {
script = "iptsd $(iptsd-find-hidraw)"; script = "iptsd $(iptsd-find-hidraw)";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
environment.etc."iptsd/iptsd.conf".source = "${iptsConfFile}";
}) })
]; ];
} }