{ config, pkgs, lib, options, ... }: with builtins // lib; let cfg = config.nickle; in { options.nickle = { enable = mkEnableOption "NickleMenu"; path = mkOption { type = types.str; default = ".adds/nm"; description = "Relative path to NickleMenu within src"; }; file = mkOption { type = options.file.type; default = {}; description = "Files relative to ${cfg.path}"; }; menuItems = mkOption { type = with types; attrsOf (listOf str); default = {}; }; }; config = mkIf cfg.enable { nickle = { file = mapAttrs (_: v: { text = concatStringsSep " : " ([ "menu_item" ] ++ v) }) cfg.menuItems }; file = mapAttrs' (n: v: { name = "nm-${n}"; value = v // { target = "${cfg.path}/${v.target}"; }; }) cfg.file }; }