mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, lib, pkgs, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  inherit (lib) mkDefault mkEnableOption mkIf mkMerge mkOption types;
 | 
						|
 | 
						|
  cfg = config.microsoft-surface.ipts;
 | 
						|
 | 
						|
  iptsConfFile = pkgs.writeTextFile {
 | 
						|
    name = "iptsd.conf";
 | 
						|
    text = lib.generators.toINI { } cfg.config;
 | 
						|
  };
 | 
						|
 | 
						|
in
 | 
						|
{
 | 
						|
  options.microsoft-surface.ipts = {
 | 
						|
    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 [
 | 
						|
    {
 | 
						|
      microsoft-surface.ipts.enable = mkDefault false;
 | 
						|
    }
 | 
						|
 | 
						|
    (mkIf cfg.enable {
 | 
						|
      systemd.services.iptsd = {
 | 
						|
        description = "IPTSD";
 | 
						|
        path = with pkgs; [ iptsd ];
 | 
						|
        script = "iptsd $(iptsd-find-hidraw)";
 | 
						|
        wantedBy = [ "multi-user.target" ];
 | 
						|
      };
 | 
						|
      environment.etc."iptsd/iptsd.conf".source = "${iptsConfFile}";
 | 
						|
    })
 | 
						|
  ];
 | 
						|
}
 |