Modules Overview

Decknix is organised into modular components, each responsible for a specific area of your environment. Every module uses lib.mkDefault so you can override any setting.

Module Categories

Home-Manager Modules

ModuleDescriptionPage
EmacsFull IDE with 13+ sub-modules, profiles, daemonEmacs →
VimWhitespace cleanup, skim fuzzy finderVim →
Shell & TerminalZsh, Starship prompt, completionsShell →
GitDelta diffs, global config, LFSGit →
Window ManagementAeroSpace, Hammerspoon, SpacesWM →
AI ToolingAugment Code agent, MCP servers, Agent ShellAI →

Darwin (System) Modules

ModuleDescription
System DefaultsPackages (vim, git, curl, skim), Nerd Fonts, Dock/Finder prefs
AeroSpace SystemDisables Stage Manager, Mission Control shortcuts, separate Spaces
Emacs DaemonBackground Emacs service via launchd, ec wrapper command
CLI ModuleInstalls decknix binary, generates extensions config

Core Options

OptionDescriptionDefault
decknix.roleBootstrap template: "developer", "designer", "minimal""developer"
decknix.usernameYour macOS username (set automatically by mkSystem)
decknix.hostnameMachine hostname

Editor Profiles

Instead of toggling individual modules, choose a profile tier:

Emacs Profiles

ProfileModules Included
minimalcore, completion, editing, UI, undo, project
standardminimal + development, magit, treemacs, languages, welcome
full (default)standard + LSP, org-mode, HTTP client, agent-shell
customDisables framework Emacs — bring your own config

Vim Profiles

ProfileModules Included
minimalBase config (exrc, line numbers, secure)
standard (default)minimal + whitespace + skim
customDisables framework Vim — bring your own config
# Change profiles
{ ... }: {
  decknix.editors.emacs.profile = "standard";
  decknix.editors.vim.profile = "minimal";
}

Default Packages

Installed for all users regardless of role:

coreutils · curl · wget · tree · jq · ripgrep · gh

System-level: vim · git · curl · skim

Fonts: JetBrains Mono Nerd Font