{ modules, helpers }: { lib, pkgs, config, ... }: let inherit (lib) mkEnableOption mkOption mkOptionType mkForce mkMerge mkIf types ; in { topLevelModules = [ ./modules/output.nix (import ./modules/files.nix (modules pkgs)) ] ++ (modules pkgs); helpers = mkOption { type = mkOptionType { name = "helpers"; description = "Helpers that can be used when writing nixvim configs"; check = builtins.isAttrs; }; description = "Use this option to access the helpers"; default = helpers; }; configFiles = let cfg = config.programs.nixvim; in (lib.mapAttrs' (_: file: lib.nameValuePair "nvim/${file.path}" { text = file.content; }) cfg.files) // (lib.mapAttrs' ( path: content: lib.nameValuePair "nvim/${path}" { text = content; } ) cfg.extraFiles); }