What problem does it solve? Writing conditional logic in Nix configurations often leads to verbose if-then-else expressions that are hard to read and merge. This Skill provides the idiomatic lib function patterns for conditional configuration blocks, list items, and strings. ## Core Features & Use Cases - Conditional Config Blocks: Use lib.mkIf to enable entire configuration sections only when a flag is set. - Conditional List Items: Use lib.optionals to append packages or entries to lists based on conditions like platform or feature flags. - Conditional Strings: Use lib.optionalString to append shell snippets or text conditionally. - Combining Conditions: Use lib.mkMerge to merge multiple conditional blocks into one config. - Use Case: When writing a Home Manager module, conditionally install ripgrep and fd only when a custom enable-tools option is true, and add Linux-only packages using pkgs.stdenv.isLinux. ## Quick Start Show me how to conditionally enable git and vim in my Nix configuration using mkIf and mkMerge.