nixkit Configuration Options

Version 26.05

Packages

The following packages are provided by nixkit:

PackageDescriptionPlatforms
aerospace-swipeswitch workspaces in AeroSpace with trackpad swipesmacOS, macOS (ARM)
defaultbrowserUtility to set the default browser on macOSmacOS, macOS (ARM)
dimclientPython client for DIM (DNS and IP Management)macOS, macOS (ARM), Linux (ARM), Linux
kubernetes-mcp-serverKubernetes MCP server for AI tools to interact with Kubernetes clustersmacOS, macOS (ARM), Linux (ARM), Linux
ndcliCommand line interface for DIM (DNS and IP Management)macOS, macOS (ARM), Linux (ARM), Linux
nixupdaterMenu bar app to check for updates on macOSmacOS, macOS (ARM)
opsopsA simple tool for managing secrets (with 1password integration)macOS, macOS (ARM), Linux (ARM), Linux
prlspLSP server that surfaces GitHub PR review comments as editor diagnosticsmacOS, macOS (ARM), Linux (ARM), Linux
prlsp-nvimNeovim plugin for prlsp — view and reply to GitHub PR review comments via LSPmacOS, macOS (ARM), Linux (ARM), Linux
prometheus-mcp-serverMCP server for Prometheus integrationLinux (ARM), Linux, macOS, macOS (ARM)
skhd_zigSimple Hotkey Daemon for macOS, ported from skhd by koekeishiyamacOS (ARM)

Requirements

  • Nix with flakes enabled
  • For Home Manager modules: Home Manager
  • For NixOS modules: NixOS system
  • For Darwin modules: nix-darwin

Table of Contents

Known Issues
programs.aerospace-swipe.enable

Whether to enable aerospace-swipe configuration.

Type: boolean

Default:

false

Example:

true

Declared by:

modules/home/aerospace-swipe.nix
programs.aerospace-swipe.fingers

Number of fingers needed for swipe

Type: signed integer

Default:

3

Example:

"4"

Declared by:

modules/home/aerospace-swipe.nix
programs.aerospace-swipe.haptic

Enable haptic feedback

Type: boolean

Default:

false

Example:

"true"

Declared by:

modules/home/aerospace-swipe.nix
programs.aerospace-swipe.natural_swipe

Enable natural swipe

Type: boolean

Default:

false

Example:

"true"

Declared by:

modules/home/aerospace-swipe.nix
programs.aerospace-swipe.skip_empty

Skip empty workspaces

Type: boolean

Default:

true

Example:

"false"

Declared by:

modules/home/aerospace-swipe.nix
programs.aerospace-swipe.wrap_around

Wrap around workpsace

Type: boolean

Default:

true

Example:

"false"

Declared by:

modules/home/aerospace-swipe.nix
programs.default-browser.enable

Whether to enable Default browser configuration.

Type: boolean

Default:

false

Example:

true

Declared by:

modules/home/default-browser.nix
programs.default-browser.browser

The browser to set as default

Type: string

Default:

""

Example:

"firefox"

Declared by:

modules/home/default-browser.nix
programs.ndcli.enable

Whether to enable ndcli command line tool.

Type: boolean

Default:

false

Example:

true

Declared by:

modules/home/ndcli.nix
programs.ndcli.server

DIM server URL

Type: string

Default:

"http://localhost:5000"

Declared by:

modules/home/ndcli.nix
programs.ndcli.username

Username for DIM authentication

Type: string

Default:

{
  _type = "override";
  content = "";
  priority = 1000;
}

Declared by:

modules/home/ndcli.nix
programs.nixupdater.enable

Whether to enable nixupdater configuration.

Type: boolean

Default:

false

Example:

true

Declared by:

modules/home/nixupdater.nix
programs.nixupdater.command

Command to run when updates are available. Can be used to trigger a notification or directly apply updates

Type: string

Default:

"jinx update"

Example:

"darwin-rebuild switch --flake .#my-mac"

Declared by:

modules/home/nixupdater.nix
programs.nixupdater.flake

Sets the flake path.

Type: string

Default:

""

Example:

"/Users/alice/other-dotfiles"

Declared by:

modules/home/nixupdater.nix
programs.nixupdater.interval

Set the interval in seconds for checking for updates

Type: signed integer

Default:

1800

Example:

"300"

Declared by:

modules/home/nixupdater.nix
programs.nixupdater.terminal

Terminal to use for running the update command. Options: terminal macOS Terminal.app iterm iTerm2 kitty new kitty window (default) kitty-tab new tab in the running kitty instance * kitty-overlay overlay in the focused kitty window * alacritty ghostty

  • kitty-tab and kitty-overlay use kitty’s remote-control protocol (kitty @ new-window). They require allow_remote_control yes in kitty.conf, or kitty launched with --listen-on / KITTY_LISTEN_ON. Falls back to a new kitty window when no running instance is found.

Type: one of “terminal”, “iterm”, “kitty”, “kitty-tab”, “kitty-overlay”, “alacritty”, “ghostty”

Default:

"kitty"

Example:

"kitty-overlay"

Declared by:

modules/home/nixupdater.nix

Known Issues

Claude Code deduplicates MCP servers by command path

Home Manager provides a programs.mcp.servers option for configuring MCP servers. When multiple servers use the same binary (e.g. two instances of prometheus-mcp-server pointed at different clusters), Claude Code (v2.1.71+) incorrectly treats them as duplicates and silently drops all but one — even when their environment variables differ.

Workaround: wrap each server in a pkgs.writeShellScriptBin stub so each entry gets a unique store path:

let
  mkWrapper = name:
    pkgs.writeShellScriptBin "prometheus-mcp-server-${name}" ''
      exec ${pkgs.prometheus-mcp-server}/bin/prometheus-mcp-server "$@"
    '';
in {
  programs.mcp.servers = {
    "prometheus/cluster-a" = {
      command = "${mkWrapper "cluster-a"}/bin/prometheus-mcp-server-cluster-a";
      args = [];
      env.PROMETHEUS_URL = "https://prometheus.cluster-a.example.com";
    };
    "prometheus/cluster-b" = {
      command = "${mkWrapper "cluster-b"}/bin/prometheus-mcp-server-cluster-b";
      args = [];
      env.PROMETHEUS_URL = "https://prometheus.cluster-b.example.com";
    };
  };
}

Tracked upstream at anthropics/claude-code#32549.