A cyberpunk/netrunner themed, keyboard-driven environment managed with chezmoi. One source tree renders per-machine configs for four targets:
- CachyOS Linux — Hyprland desktop
- macOS — CLI stack + Homebrew-managed apps, plus App Store installs
- Android — Termux
- Parrot OS (HTB edition) — lean CLI stack on a Debian VM
- Unified cyberpunk palette — shared color data lives in
.chezmoidata.yamland feeds the shell prompt, Git, terminal, editor, and TUIs. The visual reference lives incolor_palettes/cyberpunk/palette.html. - Hyprland desktop — configured in Lua, driven by Noctalia (a native Wayland desktop shell that provides the bar, launcher, control center, notifications, lock screen, wallpaper, and screenshot toolkit).
- Fish shell with a custom cyberpunk prompt and per-OS branching.
- Helix + language servers for LSP-powered editing.
- Cross-platform templating — a single repo that renders correctly on Arch
and Debian Linux, macOS, and Termux from
.chezmoi.os/.chezmoi.osRelease.id.
Note: These are my personal dotfiles. You'll need to update user-specific information in configs like Git (name/email), backup remotes, paths, and any API keys or tokens.
gitchezmoi- SSH keys configured with GitHub (for forking)
- Fork this repository to your GitHub account
- Install
gitandchezmoi - Generate an SSH key:
ssh-keygen -t ed25519 -C "your_email@example.com" - Add the SSH key to GitHub
- Run
chezmoi init <YOUR_USERNAME> --ssh - Run
chezmoi apply - Customize configs to your preferences
On first apply, the OS-specific install script
(.chezmoiscripts/run_onchange_*install-packages-<os>.sh.tmpl) installs the
matching toolchain for your platform.
| Task | Command |
|---|---|
| Initialize & apply (SSH) | chezmoi init <GITHUB_REPO> --apply |
| Pull updates | chezmoi update |
| Inspect changes | chezmoi diff |
| Apply local changes | chezmoi apply |
| Render one file | chezmoi cat <FILE> |
| Edit a tracked file | chezmoi edit <FILE> |
| Start tracking a file | chezmoi add <FILE> |
| Jump to source repo | chezmoi cd |
Desktop — Linux / CachyOS
| Tool | Key Files (chezmoi paths) |
|---|---|
| Hyprland | dot_config/hypr |
| Noctalia | - |
| cliphist | - |
Hyprland is configured in Lua — hyprland.lua loads the modules under
dot_config/hypr/config/*.lua (binds, animations, window rules, monitors,
workspaces, autostart, …). Default apps: kitty, dolphin, zen-browser,
helix, gnome-calculator.
Noctalia's own config (~/.config/noctalia/config.toml) is not tracked here —
it's managed through the shell's settings UI. hyprland.lua ends with
require("noctalia").apply_theme() so the generated palette reaches Hyprland;
leave that line in place.
Parrot OS (HTB edition)
A deliberately lean target: shell, editor, git, core CLI, and the Go/Rust/gh toolchains — no desktop, and none of the TUI apps that need a personal account or secret to be useful.
| Tool | Key Files (chezmoi paths) |
|---|---|
| fish | dot_config/fish |
| Helix | dot_config/helix |
| bat | dot_config/bat |
| eza | dot_config/eza |
| fastfetch | dot_config/fastfetch |
Debian renames several binaries: bat → batcat, fd-find → fdfind, and
helix → hx. dot_config/fish/conf.d/modern-cli.fish aliases around all
three for interactive use, while $EDITOR and git core.editor are templated
to the real hx binary — an alias is a fish function and can't serve either.
gh is not in the Debian archive, so
.chezmoiscripts/run_onchange_before_install-packages-parrot.sh.tmpl
adds GitHub's own apt source. That script also switches the login shell to fish,
since Parrot ships zsh.
Configs for tools outside this set (crush, glow, golazo, newsboat,
outside, oxicord, superfile, linear-tui) are gated off in
.chezmoiignore.
Shell & Terminal
| Tool | Key Files (chezmoi paths) |
|---|---|
| fish | dot_config/fish |
| kitty | dot_config/kitty |
Termux ships its own terminal config under dot_termux.
Editor & Language Servers
| Tool | Key Files (chezmoi paths) |
|---|---|
| Helix | dot_config/helix |
| bash-language-server | - |
| lua-language-server | - |
| marksman | - |
| taplo | - |
| typos-lsp | - |
| vscode-langservers | - |
| yaml-language-server | - |
Files, Viewers & Monitoring
| Tool | Key Files (chezmoi paths) |
|---|---|
| Superfile | dot_config/private_superfile |
| eza | dot_config/eza |
| fd | - |
| entr | - |
| bat | dot_config/bat |
| glow | dot_config/private_glow |
| tldr | - |
| btop | dot_config/btop |
| fastfetch | dot_config/fastfetch |
Git & Dev
| Tool | Key Files (chezmoi paths) |
|---|---|
| Git | dot_gitconfig.tmpl, dot_gitignore |
| git-delta | - |
| gh | - (macOS) |
| pre-commit | - |
| markdownlint-cli2 | - |
| GoReleaser | - |
| vhs | - |
| hugo | - (macOS) |
| Crush | dot_config/crush |
Go Toolchain
| Tool | Key Files (chezmoi paths) |
|---|---|
| go / gopls | - |
| delve | - |
| golangci-lint | - |
| golangci-lint-langserver | - |
| goimports | - |
| gocovsh | - |
| go-global-update | - |
| cobra-cli | - |
| ghost | - |
Rust Tools
| Tool | Key Files (chezmoi paths) |
|---|---|
| rustup | - |
| cargo-update | - |
| outside | dot_config/outside |
Notes, News & Productivity
| Tool | Key Files (chezmoi paths) |
|---|---|
| clin | dot_config/clin |
| Toney | dot_config/toney (Android) |
| linear-tui | dot_linear-tui |
| golazo | dot_config/golazo |
| newsboat | dot_config/newsboat |
Communication
| Tool | Key Files (chezmoi paths) |
|---|---|
| oxicord | dot_config/oxicord |
| matcha | - |
| slack-desktop | - |
Utilities & System
| Tool | Key Files (chezmoi paths) |
|---|---|
| chezmoi | - |
| Tailscale | - |
| Bitwarden / bitwarden-cli | - |
| Ollama | - |
| speedtest-cli | - |
| cmatrix | - |
| Nerd Fonts | - |
| qFlipper | - |
macOS apps
Homebrew manages the CLI stack and the apps declared in dot_Brewfile.
Bitwarden and Tailscale are intentionally installed through the Mac App Store and are
not managed by Homebrew or chezmoi.
| App | Source |
|---|---|
| AeroSpace | Homebrew cask |
| ChatGPT | Homebrew cask |
| Karabiner-Elements | Homebrew cask |
| Kitty | Homebrew cask |
| Notion | Homebrew cask |
| Surfshark | Homebrew cask |
| UHK Agent | Homebrew cask |
| qFlipper | Homebrew cask |
| Zen | Homebrew cask |
| Bitwarden | Mac App Store |
| Tailscale | Mac App Store |
The canonical machine-readable cyberpunk palette lives in
.chezmoidata.yaml. Chezmoi templates consume it across
Fish, Git/delta, Kitty, Helix, bat, btop, Glow, Superfile, Fastfetch, Newsboat,
Termux, Toney, and clin.
color_palettes/cyberpunk/palette.html
is the human-friendly visual reference. It is repo documentation, not the
runtime source of truth. Shared color changes belong in .chezmoidata.yaml.
MIT