kanata-darwin Configuration Options

Declarative configuration module for kanata keyboard remapper for macOS (nix-darwin)


_module.args

Additional arguments passed to each module in addition to ones like lib, config, and pkgs, modulesPath.

This option is also available to all submodules. Submodules do not inherit args from their parent module, nor do they provide args to their parent module or sibling submodules. The sole exception to this is the argument name which is provided by parent modules to a submodule and contains the attribute name the submodule is bound to, or a unique generated name if it is not bound to an attribute.

Some arguments are already passed by default, of which the following cannot be changed with this option:

  • lib: The nixpkgs library.

  • config: The results of all options after merging the values from all modules together.

  • options: The options declared in all modules.

  • specialArgs: The specialArgs argument passed to evalModules.

  • All attributes of specialArgs

    Whereas option values can generally depend on other option values thanks to laziness, this does not apply to imports, which must be computed statically before anything else.

    For this reason, callers of the module system can provide specialArgs which are available during import resolution.

    For NixOS, specialArgs includes modulesPath, which allows you to import extra modules from the nixpkgs package tree without having to somehow make the module aware of the location of the nixpkgs or NixOS directories.

    { modulesPath, ... }: {
      imports = [
        (modulesPath + "/profiles/minimal.nix")
      ];
    }
    

For NixOS, the default value for this option includes at least this argument:

  • pkgs: The nixpkgs package set according to the nixpkgs.pkgs option.

Type: lazy attribute set of raw value

Declared by:

<nixpkgs/lib/modules.nix>
services.kanata.enable

Whether to enable kanata keyboard remapper with Karabiner DriverKit.

Type: boolean

Default:

false

Example:

true
services.kanata.package

The kanata package to use.

Type: package

Default:

pkgs.kanata-with-cmd
services.kanata.configFile

Path to kanata configuration file.

Type: string

Default:

"/Users/user/.config/kanata/kanata.kbd"
services.kanata.configSource

If set, configFile will be symlinked to this path. Use a string for an out-of-store symlink (edits take effect without rebuild): configSource = “/Users/you/.nix-config/kanata.kbd”; Use a path to copy into the nix store (immutable, requires rebuild): configSource = ./kanata.kbd;

Type: null or absolute path or string

Default:

null
services.kanata.daemon.enable

Whether to enable headless kanata launchd service.

Type: boolean

Default:

false

Example:

true
services.kanata.daemon.extraLaunchdConfig

Extra launchd plist keys (e.g. KeepAlive, ThrottleInterval). Shallow-merged (nested keys are replaced, not deep-merged).

Type: attribute set of anything

Default:

{ }
services.kanata.kanata-bar.enable

Whether to enable kanata-bar GUI launcher.

Type: boolean

Default:

false

Example:

true
services.kanata.kanata-bar.package

The kanata-bar .app package.

Type: package

Default:

<derivation kanata-bar-app-1.1.10>
services.kanata.kanata-bar.autostart

Whether to create a launchd user agent that starts kanata-bar automatically at login. When false, you can start it manually from /Applications/Nix Apps/.

Type: boolean

Default:

true
services.kanata.kanata-bar.extraLaunchdConfig

Extra launchd plist keys (e.g. KeepAlive, ThrottleInterval). Shallow-merged (nested keys are replaced, not deep-merged).

Type: attribute set of anything

Default:

{ }
services.kanata.kanata-bar.icons

Map of kanata layer names to icon files (PNG recommended). Use mkLayerIcons to generate icons from font glyphs.

Type: attribute set of absolute path

Default:

{ }

Example:

{ nav = ./icons/nav.png; }
services.kanata.kanata-bar.settings

Settings merged into kanata-bar config.toml. Auto-propagated defaults: kanata.{path,config,port,extra_args}, kanata_bar.{autostart_kanata,autorestart_kanata,pam_touchid}.

Type: TOML value

Default:

{ }
services.kanata.kanata-tray.enable

Whether to enable kanata-tray GUI launcher.

Type: boolean

Default:

false

Example:

true
services.kanata.kanata-tray.package

The kanata-tray package.

Type: package

Default:

<derivation kanata-tray>
services.kanata.kanata-tray.autostart

Whether to create a launchd user agent that starts kanata-tray automatically at login. When false, the .app bundle is still available in /Applications/Nix Apps/.

Type: boolean

Default:

true
services.kanata.kanata-tray.extraLaunchdConfig

Extra launchd plist keys (e.g. KeepAlive, ThrottleInterval). Shallow-merged (nested keys are replaced, not deep-merged).

Type: attribute set of anything

Default:

{ }
services.kanata.kanata-tray.icons

Map of kanata layer names to icon files (PNG recommended). Use mkLayerIcons to generate icons from font glyphs.

Type: attribute set of absolute path

Default:

{ }

Example:

{ nav = ./icons/nav.png; }
services.kanata.kanata-tray.settings

Extra settings merged into kanata-tray.toml.

Type: TOML value

Default:

{ }
services.kanata.sudoers

Add NOPASSWD sudoers entry for kanata. Defaults to true. Required for clean process termination in tray mode and to avoid the fragile TCC sqlite3 hack in daemon mode.

Type: boolean

Default:

true
services.kanata.user

Username for sudoers, user agent, and file paths. Defaults to system.primaryUser.

Type: string

Default:

"user"