Skip to content

General

Everything under System Settings › Keyboard › General, as Nix options. Each one is named after the control you'd click, and set under programs.nix-plist-manager.options in home-manager.

4 options 2 verified against System Settings

System Settings › Keyboard › Delay until repeat

home-manager · per user Not verified After logging out

Time before a held key repeats, in 15 ms steps: lower is shorter. System Settings offers 120, 94, 68, 35, 25 and 15. Takes effect after logging out.

applications.systemSettings.keyboard.delayUntilRepeat = 10;

A number from 10 to 120 "unset" puts back macOS's default.

Where it's stored and what runs
  • NSGlobalDomain InitialKeyRepeat

For 10:

/usr/bin/defaults write NSGlobalDomain InitialKeyRepeat -int 10 || echo 'nix-plist-manager: failed: /usr/bin/defaults write NSGlobalDomain InitialKeyRepeat -int 10' >&2
/usr/bin/defaults -currentHost delete NSGlobalDomain InitialKeyRepeat 2>/dev/null || true

For 120:

/usr/bin/defaults write NSGlobalDomain InitialKeyRepeat -int 120 || echo 'nix-plist-manager: failed: /usr/bin/defaults write NSGlobalDomain InitialKeyRepeat -int 120' >&2
/usr/bin/defaults -currentHost delete NSGlobalDomain InitialKeyRepeat 2>/dev/null || true

For unset:

/usr/bin/defaults delete NSGlobalDomain InitialKeyRepeat 2>/dev/null || true
/usr/bin/defaults -currentHost delete NSGlobalDomain InitialKeyRepeat 2>/dev/null || true

System Settings › Keyboard › Key repeat rate

home-manager · per user Not verified After logging out

Time between repeats, in 15 ms steps: lower is faster. System Settings offers 120, 90, 60, 30, 12, 6 and 2. Takes effect after logging out.

applications.systemSettings.keyboard.keyRepeatRate = 1;

A number from 1 to 120 "unset" puts back macOS's default.

Where it's stored and what runs
  • NSGlobalDomain KeyRepeat

For 1:

/usr/bin/defaults write NSGlobalDomain KeyRepeat -int 1 || echo 'nix-plist-manager: failed: /usr/bin/defaults write NSGlobalDomain KeyRepeat -int 1' >&2
/usr/bin/defaults -currentHost delete NSGlobalDomain KeyRepeat 2>/dev/null || true

For 120:

/usr/bin/defaults write NSGlobalDomain KeyRepeat -int 120 || echo 'nix-plist-manager: failed: /usr/bin/defaults write NSGlobalDomain KeyRepeat -int 120' >&2
/usr/bin/defaults -currentHost delete NSGlobalDomain KeyRepeat 2>/dev/null || true

For unset:

/usr/bin/defaults delete NSGlobalDomain KeyRepeat 2>/dev/null || true
/usr/bin/defaults -currentHost delete NSGlobalDomain KeyRepeat 2>/dev/null || true

System Settings › Keyboard › Keyboard navigation

home-manager · per user ✓ Verified on macOS 27
applications.systemSettings.keyboard.keyboardNavigation = true;

true or false "unset" puts back macOS's default.

Where it's stored and what runs
  • NSGlobalDomain AppleKeyboardUIMode

For false:

/usr/bin/defaults write NSGlobalDomain AppleKeyboardUIMode -int 0 || echo 'nix-plist-manager: failed: /usr/bin/defaults write NSGlobalDomain AppleKeyboardUIMode -int 0' >&2
/usr/bin/defaults -currentHost delete NSGlobalDomain AppleKeyboardUIMode 2>/dev/null || true

For true:

/usr/bin/defaults write NSGlobalDomain AppleKeyboardUIMode -int 2 || echo 'nix-plist-manager: failed: /usr/bin/defaults write NSGlobalDomain AppleKeyboardUIMode -int 2' >&2
/usr/bin/defaults -currentHost delete NSGlobalDomain AppleKeyboardUIMode 2>/dev/null || true

For unset:

/usr/bin/defaults delete NSGlobalDomain AppleKeyboardUIMode 2>/dev/null || true
/usr/bin/defaults -currentHost delete NSGlobalDomain AppleKeyboardUIMode 2>/dev/null || true

System Settings › Keyboard › Press 🌐︎ key to

home-manager · per user ✓ Verified on macOS 27
applications.systemSettings.keyboard.pressGlobeKeyTo = "Change Input Source";

One of: "Change Input Source""Do Nothing""Show Emoji & Symbols""Start Dictation (Press 🌐︎ Twice)" "unset" puts back macOS's default.

Where it's stored and what runs
  • com.apple.HIToolbox AppleFnUsageType

For Change Input Source:

/usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 1 || echo 'nix-plist-manager: failed: /usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 1' >&2
/usr/bin/defaults -currentHost delete com.apple.HIToolbox AppleFnUsageType 2>/dev/null || true

For Do Nothing:

/usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 0 || echo 'nix-plist-manager: failed: /usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 0' >&2
/usr/bin/defaults -currentHost delete com.apple.HIToolbox AppleFnUsageType 2>/dev/null || true

For Show Emoji & Symbols:

/usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 2 || echo 'nix-plist-manager: failed: /usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 2' >&2
/usr/bin/defaults -currentHost delete com.apple.HIToolbox AppleFnUsageType 2>/dev/null || true

For Start Dictation (Press 🌐︎ Twice):

/usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 3 || echo 'nix-plist-manager: failed: /usr/bin/defaults write com.apple.HIToolbox AppleFnUsageType -int 3' >&2
/usr/bin/defaults -currentHost delete com.apple.HIToolbox AppleFnUsageType 2>/dev/null || true

For unset:

/usr/bin/defaults delete com.apple.HIToolbox AppleFnUsageType 2>/dev/null || true
/usr/bin/defaults -currentHost delete com.apple.HIToolbox AppleFnUsageType 2>/dev/null || true