Skip to content

zenibako/dotfiles

Repository files navigation

dotfiles

Personal configuration files managed with KCL and dotter.

What's Included

  • Shell: Zsh (Oh My Zsh), Nushell, Fish
  • Terminal: Ghostty
  • Multiplexer: Tmux with theme support
  • Editor: Neovim with LSP, plugins, and profile variants (default/work/personal)
  • CLI Tools: Starship, Atuin, Carapace, Zoxide, Jujutsu, iamb
  • AI Assistants: OpenCode, Claude Code, Kiro (MCP server configs, commands, skills)
  • Window Management: AeroSpace (macOS), Hyprland (Linux)
  • Package Managers: Homebrew (macOS), pnpm, npm

Installation

1. Clone and configure

git clone https://github.com/zenibako/dotfiles.git
cd dotfiles
cp local.toml.example .dotter/local.toml

Edit .dotter/local.toml to set your name, email, profile, platform, and theme.

2. Run init

sh init.sh

This installs dependencies, generates configs from KCL, and deploys via dotter.

Usage

Deploy changes

./deploy.sh        # KCL generation + dotter deploy
./deploy.sh -f     # Force overwrite changed targets

Always use ./deploy.sh rather than bare dotter deploy — KCL must regenerate global.toml before dotter reads it.

Profiles

Select ONE profile, ONE platform, ONE theme in .dotter/local.toml:

packages = ["work", "mac", "monokai"]
  • work / personal — both inherit from default via depends
  • Themes: monokai, nightowl, tokyonight

Secrets

Secrets are fetched from macOS Keychain (or Proton Pass) and injected into deployed configs during post_deploy.sh. Never commit secrets to local.toml.

security add-generic-password -s KEY_NAME -a dotfiles -w SECRET_VALUE -U login.keychain

Architecture

src/                    # Source of truth
├── main.k              # KCL entrypoint
├── profiles.k          # Profile/package definitions
├── *.k                 # KCL modules (env, packages, themes, etc.)
├── zshrc               # Zsh interactive config (template)
├── nvim/               # Neovim configs (default/work/personal)
├── opencode/           # OpenCode commands, prompts, skills
├── claude-code/        # Claude Code CLAUDE.md + settings
├── kiro/               # Kiro steering + MCP config
├── gnupg/              # GPG agent config (template)
└── ...                 # Other tool configs

scripts/                # Deploy pipeline scripts
├── pre_deploy.sh       # KCL generation + validation (dotter hook)
├── post_deploy.sh      # Secret injection + post-deploy checks (dotter hook)
└── dotter/             # Shared helpers and validators
    ├── lib.sh          # Common functions (resolve_python, run_with_timeout, etc.)
    ├── generate_from_kcl.py  # Converts KCL JSON output to dotter global.toml + configs
    ├── validate_*.py   # Config validation scripts
    └── validate_schema.sh

.dotter/                # Generated output (gitignored)
├── global.toml         # Generated by KCL pipeline
├── local.toml          # Per-machine config (user creates)
├── pre_deploy.sh       # Symlink → ../scripts/pre_deploy.sh
└── post_deploy.sh      # Symlink → ../scripts/post_deploy.sh

out/                    # Generated config files (gitignored, written by KCL)
deploy.sh               # Deploy wrapper (creates .dotter/, runs pipeline)
init.sh                 # First-time machine setup
local.k.example         # Template for local.k (generates .dotter/local.toml)
local.toml.example      # Template for .dotter/local.toml

Pipeline

  1. KCL (src/main.k) evaluates profiles, variables, and templates into JSON
  2. Python (scripts/dotter/generate_from_kcl.py) converts JSON into .dotter/global.toml + out/ configs
  3. Dotter reads global.toml + local.toml, deploys files to ~/.config/ etc.
  4. Post-deploy injects secrets from Keychain, validates Lua/LSP/schemas

Platform Support

  • macOS: Full support (Homebrew, AeroSpace, Ghostty)
  • Linux: Fedora (dnf), Arch (pacman), Debian/Ubuntu (apt), openSUSE (zypper), Alpine (apk)

License

Personal configurations — use at your own discretion.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors