{ lib, config, pkgs, ... }: let cfg = config.this.laptop.zcfan; mkConf = c: lib.generators.toKeyValue { mkKeyValue = lib.generators.mkKeyValueDefault {} " "; } c; conf = mkConf cfg.settings; in { options = { this.laptop.zcfan.enable = lib.mkEnableOption "zcfan"; this.laptop.zcfan.settings = lib.mkOption { type = with lib.types; attrsOf (oneOf [int str]); default = { }; description = "Settings for zcfan."; }; }; config = lib.mkIf cfg.enable { environment.etc."zcfan.conf" = lib.mkIf (conf != "") { text = conf; }; environment.systemPackages = [ pkgs.zcfan ]; systemd.packages = [ pkgs.zcfan ]; }; }