{ config, pkgs, lib, ... }: with builtins // lib; let cfg = config.kfmon; ini = pkgs.formats.ini {}; in { options.kfmon = { enable = mkEnableOption "KFMon"; package = mkPackageOption pkgs "kfmon" {}; path = mkOption { type = types.str; readOnly = true; internal = true; default = ".adds/kfmon"; }; devicePath = mkOption { type = types.str; readOnly = true; internal = true; default = "/mnt/onboard/${cfg.path}"; }; file = mkOption { default = {}; type = types.attrsOf (types.submodule (pkgs.callPackage ../lib/file-type.nix {})); }; _allFiles = mkOption { type = types.package; internal = true; readOnly = true; default = (pkgs.callPackage ../lib/merge-files.nix {}) (attrValues file); }; configs = mkOption { type = types.attrsOf ini.type; default = {}; description = '' KFMon .ini config files. Do not touch this unless you know what you're doing! ''; }; }; config = { kfmon.file = mapAttrs' (n: v: { name = "kfmon-config-${n}"; value = { text = generators.toINI {} v; target = let fixedN = if isSuffix ".ini" n then n else "${n}.ini"; in "config/${fixedN}"; }; }); }; };