{...}: { # This function merges a default profile with specific overrides # It takes the default profile settings, extensions, keybindings, etc., and merges them with profile-specific ones mergeProfile = defaultProfile: specificProfile: { extensions = (defaultProfile.extensions or []) ++ (specificProfile.extensions or []); userSettings = (defaultProfile.userSettings or {}) // (specificProfile.userSettings or {}); # Merge keybindings by concatenating arrays keybindings = (defaultProfile.keybindings or []) ++ (specificProfile.keybindings or []); languageSnippets = (defaultProfile.languageSnippets or {}) // (let snippets = specificProfile.languageSnippets or {}; mergeSnippets = language: defaultSnippets: if builtins.hasAttr language snippets then defaultSnippets // snippets.${language} else defaultSnippets; in builtins.mapAttrs mergeSnippets (defaultProfile.languageSnippets or {})); }; }