nixkit Configuration Options

Version 26.05

Packages

The following packages are provided by nixkit:

PackageDescriptionPlatforms
defaultbrowserUtility to set the default browser on macOSmacOS (ARM)
dimclientPython client for DIM (DNS and IP Management)Linux, macOS (ARM), Linux (ARM)
flateRender and diff Flux GitOps repositories offline, without a clustermacOS (ARM), Linux, Linux (ARM)
ghostty-tip 👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration. macOS (ARM)
kubernetes-mcp-serverKubernetes MCP server for AI tools to interact with Kubernetes clustersmacOS (ARM), Linux, Linux (ARM)
mac-mouse-fixMake your $10 mouse better than an Apple Trackpad (built from source)macOS (ARM)
mcp-remoteProxy that lets stdio-only MCP clients connect to remote MCP serversLinux, macOS (ARM), Linux (ARM)
ndcliCommand line interface for DIM (DNS and IP Management)Linux, macOS (ARM), Linux (ARM)
nixupdaterMenu bar app to check for updates on macOSmacOS (ARM)
opsopsA simple tool for managing secrets (with 1password integration)macOS (ARM), Linux (ARM), Linux
podman-mac-helperHelper binary for running Podman on macOSmacOS (ARM)
prlspLSP server that surfaces GitHub PR review comments as editor diagnosticsmacOS (ARM), Linux, Linux (ARM)
prlsp-nvimNeovim plugin for prlsp — view and reply to GitHub PR review comments via LSPLinux, macOS (ARM), Linux (ARM)
prometheus-mcp-serverMCP server for Prometheus integrationLinux, Linux (ARM), macOS (ARM)
renovate-jhcCross-platform Dependency Automation by Mend.io (JHOFER-Cloud fork)Linux, macOS (ARM), Linux (ARM)
skhd_zigSimple Hotkey Daemon for macOS, ported from skhd by koekeishiyamacOS (ARM)
topfTalos Orchestrator by PostFinance for managing Talos based Kubernetes clustersmacOS (ARM), Linux, Linux (ARM)
yabaiTiling window manager for macOS based on binary space partitioningmacOS (ARM)

Requirements

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

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.mac-mouse-fix.enable

Whether to enable Mac Mouse Fix, installed into /Applications.

Type: boolean

Default:

false

Example:

true

Declared by:

modules/home/mac-mouse-fix.nix
programs.mac-mouse-fix.package

The mac-mouse-fix package to install.

Type: package

Default:

pkgs.mac-mouse-fix

Declared by:

modules/home/mac-mouse-fix.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.