Cyberpunk: Edgerunners-themed development environment — one palette, every tool
Neovim · Zsh · Tmux · Starship · Ghostty · Kitty · AeroSpace · Übersicht · Zellij
Neovim + tmux in the teal Night City palette · Aeroline vertical bar (right edge) with AeroSpace workspaces + clock · Starship λ prompt with git status
Needs git, zsh and curl; everything else comes from packages/.
git clone --recurse-submodules https://github.com/kyuna0312/dotfiles ~/dotfiles
cd ~/dotfiles && bash install.shRe-link only (after editing configs):
bash install.sh --skip-packages
With pentest tools:bash install.sh --security
Preview:bash install.sh --dry-run
The installer backs up anything it replaces as <file>.bak.<timestamp>, links every
config/* dir into ~/.config, and ends with the short list of steps macOS still
needs by hand (Accessibility for AeroSpace/Karabiner, the Übersicht widget).
Update
cd ~/dotfiles && git pull --recurse-submodules && bash install.sh --skip-packages
git submodule update --remote config/nvim config/emacs config/ai/clean-code-skills # newer NyanVim / NyanEmacs / clean-codeUndo: every file the installer replaced is next to its symlink as <name>.bak.<timestamp>;
remove the symlink and rename the backup. There is no uninstall script on purpose.
| Component | Config path | Description |
|---|---|---|
| Zsh | home/.zshenv → config/zsh/.zshrc + lib/ |
Modular OS-split shell; NIGHT CITY helpers, fzf, zoxide; nvm only on nvm use |
| Starship | config/starship/starship.toml |
λ prompt, NIGHT CITY ribbon on stack tokens, OS badge, git status |
| Neovim | config/nvim/ → NyanVim v1.4 |
~30 ms startup, live theme switcher, :Nyan* menu, git-ignored lua/user/ overrides; Night City Mix via nightcity.nvim (git submodule) · nyanvim.vercel.app |
| Emacs | config/emacs/ → NyanEmacs |
NyanVim's keys (evil + <space> leader) and Night City Mix theme on Centaur Emacs's layout; eglot, vertico/consult, corfu, magit, treemacs, M-x nyan-* menu, git-ignored user.el |
| Themes | themes/night-city-palettes/ → night-city-palettes |
Palette source of truth (git submodule); Ghostty/Kitty include their colors from it via ~/.config/themes |
| AI tools | config/ai/ |
One CLAUDE.md read by Claude Code and Codex; Claude settings.json (plugins, model) + Night City status line; clean-code skill (git submodule) linked into every tool; opencode agent, commands and theme |
| Tmux | config/tmux/tmux.conf |
Teal window tabs, undercurl passthrough, sessionx/floax popups, AI-CLI popups |
| Ghostty | config/ghostty/config |
Full 16-color Night City Mix palette, teal cursor, 0.8 opacity + blur |
| Kitty | config/kitty/kitty.conf |
Same palette + cmd-based keybindings mirroring Ghostty |
| Übersicht | macos/ubersicht/ |
Aeroline — right-edge vertical bar: AeroSpace workspaces + clock (sketchybar is horizontal-only) |
| AeroSpace | macos/aerospace/aerospace.toml |
Tiling WM + JankyBorders teal focus ring; app-launcher mode (keymap) |
| Karabiner / Alfred | macos/karabiner/, macos/alfred/ |
Key remaps and launcher preferences |
| Zellij | config/zellij/config.kdl |
Custom nightcity theme |
| Nushell | config/nushell/ |
Explicit-hex nightcity_theme color_config |
| Git | config/git/config + delta.gitconfig |
Shared aliases + delta pager with NIGHT CITY syntax colors |
| Atuin | config/atuin/config.toml |
Shell history search (sync-ready) |
| Security | config/zsh/lib/security.zsh |
Pentest alias layer (sectools for reference) |
| OS | Package manager | Notes |
|---|---|---|
| Arch / Manjaro | pacman + paru (AUR) | Full support; pentest extras from the AUR |
| Debian / Ubuntu | apt | bat→batcat, fd→fdfind linked; starship and eza from their release scripts; lazygit, delta, atuin, sheldon are not in apt (the shell degrades gracefully, sheldon is fetched by the installer) |
| macOS | Homebrew | formulae from packages/macos-base.txt, apps and the Nerd Font from packages/macos-cask.txt |
Package names missing from a distro are skipped with a warning, never fatal.
One token set across every tool — terminal, editor, prompt, bar, window borders. Based on Night City Mix — a gamma-correct blend of Box UK Contrast, Solarized Osaka and Cyberpunk Lucy: calm blue-grey grounds with a neon pop, easy on the eyes. It's the blend palette of kyuna0312/night-city-palettes — a four-palette collection that carries the whole design kit: drop-in terminal themes, a matching desktop wallpaper, and a teal folder icon with an apply script.
| Name | Hex | Role |
|---|---|---|
| Blue-Grey | #101a1f |
the ground everywhere — terminal, editor, bar |
| Surface | #15242d / #1d2c36 |
panels, floats, inactive tabs |
| Cyan | #2bbcd5 |
active only: current tab, selected row, keywords, focus |
| Yellow | #f2c74b |
active tab background, warnings, modified |
| Teal | #0cc7c2 |
where attention goes: cursor mode, links, clock, strings |
| Green | #49d575 |
structure: functions, classes, attributes |
| Purple | #be59d6 |
secondary accent: picker frame, dates, numbers |
| Coral | #f37c4b |
errors, deleted lines |
| Grey-Blue FG | #b6c5d3 |
running text on the blue-grey ground |
tmux prefix is C-Space. Every tmux, AeroSpace and app-launcher binding → docs/KEYMAP.md.
Zsh uses ZDOTDIR=~/.config/zsh (set by home/.zshenv), so all zsh config lives under config/zsh/. Plugins are managed by Sheldon (config/sheldon/plugins.toml).
Sourced last, after syntax highlighting. Provides:
| Command | Description |
|---|---|
nightcity |
Identity card with system info |
jack-in <host> |
Styled SSH wrapper |
flatline <name> |
Kill processes named exactly <name> (pkill -x) |
breach [dir] |
cd into directory then open $EDITOR |
ghost |
Browse history with fzf and re-run |
ports |
Open listening ports (ss on Linux, lsof on macOS) |
dp-tools(aliasnightcity-tools) prints the CLI stack reference card — defined inconfig/zsh/lib/common.zsh.
Auto-loaded when nmap or burpsuite is detected. Run sectools for a quick reference.
| Category | Tools |
|---|---|
| Network | nse, nnmap, listen, myip, sniff, sniffport |
| Web | bsuite, sqlm, nik |
| Passwords | jtr, hcat |
| Reverse Eng | ghidra-launch, r2 |
| CTF | b64d, b64e, hexdump-clean, rot13 |
Shared git config (aliases, editor, delta) is tracked in config/git/config.
Machine-local identity stays in ~/.gitconfig, which git reads last so it
overrides anything shared:
[user]
name = Your Name
email = you@example.comOne place for every AI coding tool, so a new machine (or a new project) starts with the same rules:
| File | Linked to | Purpose |
|---|---|---|
CLAUDE.md |
~/.claude/CLAUDE.md, ~/.codex/AGENTS.md |
global instructions, read in every project; a project's own CLAUDE.md adds to it |
claude/settings.json |
~/.claude/settings.json |
plugins, marketplaces, model, permissions |
claude/statusline-command.sh |
~/.claude/statusline-command.sh |
Night City status line (tmux palette) |
skills/<name>/ |
~/.claude/skills/<name>, ~/.codex/skills/<name> |
one link per skill; clean-code comes from the clean-code-skills submodule |
agents/ |
~/.claude/agents |
custom subagents |
opencode/ |
~/.config/opencode |
the nyan agent, nyan-* commands, theme |
Add a skill: drop a folder with a SKILL.md into config/ai/skills/ and re-run bash install.sh --skip-packages.
~/.claude and ~/.codex otherwise stay machine state (sessions, caches); only these files are linked.
node is the package manager's. nvm is a stub that loads ~/.nvm on first call, for projects pinned to another version (nvm use 22); it never shadows node/npm.
Set CYBERPUNK_KUBECTL_COMPLETION=0 to disable kubectl completion (removes startup latency when kubectl is installed but not actively used).
On first launch, install TPM plugins:
Start tmux → prefix + I (C-Space, then Shift-i)
Plugins install themselves on the first launch, pinned to NyanVim's
lazy-lock.json. Then:
:NyanHealth " check tools, compiler, Nerd Font
:NyanConfig " your overrides in lua/user/ (git-ignored, survive updates)
:NyanUpdate " git pull + :Lazy restore
Keys: Space then wait (which-key), Space t h theme picker, Space n NyanVim menu.
Docs: docs/wiki · site: nyanvim.vercel.app
dotfiles/
├── install.sh # thin linker (packages + symlinks)
├── lib/link.sh # symlink + logging helpers
├── home/ # files linked to $HOME
│ ├── .zshenv # sets ZDOTDIR=~/.config/zsh
│ └── .bashrc # minimal bash fallback
├── config/ # mirrors ~/.config, linked dir-by-dir
│ ├── ai/ # every AI tool: CLAUDE.md, claude/, skills/, agents/, opencode/, clean-code-skills (submodule)
│ ├── zsh/
│ │ ├── .zshrc # zsh entrypoint
│ │ └── lib/
│ │ ├── common.zsh # shared: aliases, fzf, zoxide
│ │ ├── linux.zsh # Linux: tmux auto-attach, EDITOR, security
│ │ ├── macos.zsh # macOS specifics
│ │ ├── nightcity.zsh # NIGHT CITY layer: greeting, themed helpers
│ │ └── security.zsh # pentest alias layer
│ ├── sheldon/plugins.toml # zsh plugin manifest (Sheldon)
│ ├── starship/starship.toml
│ ├── nvim/ # NyanVim (git submodule)
│ ├── emacs/ # NyanEmacs (git submodule)
│ ├── tmux/tmux.conf
│ ├── ghostty/config
│ ├── kitty/kitty.conf
│ ├── zellij/config.kdl
│ ├── git/ # config (shared) + delta.gitconfig + ignore
│ ├── bat/config
│ ├── nushell/
│ ├── atuin/
│ └── themes -> ../themes/night-city-palettes
├── themes/night-city-palettes # palette source of truth (git submodule)
├── docs/KEYMAP.md # tmux, AeroSpace and launcher bindings
├── installers/ # per-distro package installers
│ ├── arch.sh
│ ├── debian.sh
│ └── macos.sh
├── packages/ # package lists (edit to add tools)
│ ├── arch-base.txt
│ ├── macos-cask.txt # macOS apps + Nerd Font
│ └── ...
├── macos/ # aerospace, ubersicht, karabiner, alfred
├── scripts/
│ └── apply-theme.sh # hot-reload running apps
└── assets/ # README images (preview.png, logo.png)
Split out of this repo so they're reusable on their own:
- night-city-palettes — a four-palette collection (Box UK Contrast, Solarized Osaka, Cyberpunk Lucy, Night City Mix) as a portable design kit: drop-in terminal themes, a matching desktop wallpaper, and a teal folder icon.
- aeroline — the vertical Übersicht + AeroSpace status bar (right-edge workspaces + clock), one-block themeable.
- NyanVim — the Neovim distribution linked in as
config/nvim(git submodule): NvChad-class startup, LunarVim-style:Nyan*menu and try-before-you-switch installer, doom-style user layer. Website: nyanvim.vercel.app.
NIGHT CITY — Netrunner Online
built with ✦ and calm teal