{ config, pkgs, lib, options, ... }: with builtins // lib; let cfg = config.kfmon; ini = pkgs.formats.ini {}; importOption = p: (import p { inherit pkgs lib; } cfg.path).option; addSuffix = s: p: if hasSuffix s p then p else p + s; in { options.kfmon = { enable = mkEnableOption "KFMon"; path = mkOption { type = types.str; default = ".adds/kfmon"; description = "Relative path to kfmon within src"; }; devPath = mkOption { type = types.str; default = "/mnt/onboard/${cfg.path}"; readOnly = true; internal = true; }; file = importOption ./lib/file.nix; manifest = importOption ./lib/manifest.nix; 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 = addSuffix ".ini" n; value = { target = "config/${addSuffix ".ini" n}"; text = generators.toINI {} v; }; }) cfg.configs; }