A complete development environment featuring Neovim IDE, cyberpunk-themed terminal with 30+ enhancements, and full-stack developer tooling. One command installs everything.
- π¨ Platform-native shells: Powerlevel10k/Zsh on macOS and Starship/ble.sh/Bash on Ubuntu
- π€ AI Integration: Claude AI chat and code assistance directly in Neovim
- π§ Full-Stack Ready: Complete tooling for modern web development
- β‘ 30+ Terminal Enhancements: Git status, fuzzy search, auto-suggestions, and more
- π Cross-Platform: Works on macOS and Linux with one-command setup
- π Secure: API keys stored locally, never committed to version control
One-command installation - Just run this and follow the prompts:
curl -fsSL https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bashOr with wget:
wget -qO- https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bashIf you already have development tools installed:
# Clone and run locally to avoid conflicts
git clone https://github.com/rockitdev/ide.git ~/ide
cd ~/ide
./dotfiles/install.shThe installer automatically selects a shell profile:
| Platform | Profile | Shell experience |
|---|---|---|
| macOS | macos-zsh |
Zsh, Zinit, Powerlevel10k, Zsh highlighting and suggestions |
| Ubuntu/Debian | ubuntu-bash |
Bash, ble.sh, Starship, bash-completion and delayed FZF integration |
Custom GitHub username:
GITHUB_USERNAME="your-username" curl -fsSL https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bashSilent installation (no prompts):
curl -fsSL https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bash -s -- --silentUpdate existing installation:
cd ~/ide
git pull origin main
./dotfiles/scripts/setup.shRun a specific local profile:
./dotfiles/scripts/install-macos-zsh.sh
./dotfiles/scripts/install-ubuntu-bash.shmacOS (via Homebrew):
- Neovim, Git, Node.js, Python, Rust
- Alacritty, WezTerm, iTerm2 integration
- FZF, Ripgrep, Eza, Zoxide, Bat
Linux (via package manager):
- Neovim, tmux, Git, Node.js, Python and modern CLI tools
- Ubuntu/Debian Bash profile with ble.sh, Starship and bash-completion
- Other Linux distributions require a platform profile before installation
- π Neon colors: Hot pink, electric cyan, matrix green, neon purple
- β±οΈ Command timing: Shows execution time for slow commands
- π Smart directory: Path shortening with Git status
- π Git integration: Branch, status, ahead/behind indicators
- π Environment context: Python virtual environments and SSH/root context
- macOS: Powerlevel10k with asynchronous Git status
- Ubuntu: Starship with a matching TokyoNight palette
- π¨ Syntax highlighting: Commands colorized as you type
- π Auto-suggestions: Fish-like command suggestions
- π Fuzzy search: FZF for files, history, processes
- π¦ Directory jumping: Zoxide for smart
cd - π Clipboard integration:
pbcopyon macOS and tmux/OSC52 fallback on Linux
- π§ 100+ aliases: Smart shortcuts for common commands
- π Enhanced
ls: Eza with icons and Git status - π³ Tree views: Beautiful directory trees
- π¦ Better
cat: Bat with syntax highlighting - π SSH management: Key loading and connection helpers
- Theme: TokyoNight with transparency support
- Plugin Manager: Lazy.nvim with optimized loading
- LSP: Mason for automatic language server installation
- Completion: nvim-cmp with AI-powered suggestions
- Claude AI: CodeCompanion.nvim for chat and code assistance
- Terminal AI: Integrated Claude CLI for terminal usage
- Code Generation: AI-powered code completion and refactoring
- Fugitive: Premier Git integration
- Gitsigns: Inline Git decorations
- Diffview: Beautiful diff visualization
- Octo: GitHub issues and PRs in Neovim
The shell explicitly uses Zsh's Emacs keymap so terminal editing remains predictable even though $EDITOR is Neovim.
| Keybinding | Action |
|---|---|
Ctrl-A |
Move to the beginning of the command line |
Ctrl-E |
Move to the end of the command line |
Ctrl-F |
Move forward one character |
Ctrl-P / Ctrl-N |
Search backward/forward for matching history |
Ctrl-R |
Fuzzy-search command history with FZF |
Ctrl-T |
Fuzzy-select and insert a file path |
Alt-C |
Fuzzy-select a directory and change into it |
Alt-E |
Edit the current command in Neovim |
Ctrl-Space |
Accept the current autosuggestion |
FZF's shell integration is stored in ~/.fzf.zsh. The current configuration generates this file on the first shell launch if it is missing. A future installer improvement should generate it atomically during setup instead; see Terminal improvement notes.
| Keybinding | Action | Description |
|---|---|---|
<leader>cc |
Claude Chat | Open AI chat window |
<leader>ca |
Claude Actions | AI code actions menu |
<leader>e |
File Explorer | Toggle Neo-tree |
<leader>ff |
Find Files | Telescope file finder |
<leader>/ |
Live Grep | Search in project |
<leader>gs |
Git Status | Fugitive status |
<leader>gd |
Git Diff | View file changes |
<leader>gb |
Git Blame | Inline blame annotations |
<leader>l |
Lazy | Plugin manager |
| Keybinding | Action |
|---|---|
<C-h/j/k/l> |
Navigate windows |
<C-arrows> |
Resize windows |
<S-h/l> |
Navigate buffers |
gd |
Go to definition |
gr |
Find references |
K |
Hover documentation |
s |
Flash jump (quick navigation) |
- π System Detection: Automatically detects your OS and package manager
- π¦ Package Installation: Installs all required development tools
- π Profile-aware Symlinks: Links only the selected shell configuration:
~/ide/dotfiles/zsh/.zshrc β ~/.zshrc # macOS ~/ide/dotfiles/bash/.bashrc β ~/.bashrc # Ubuntu ~/ide/dotfiles/starship/ β ~/.config/starship.toml ~/ide/dotfiles/nvim β ~/.config/nvim ~/ide/dotfiles/alacritty β ~/.config/alacritty ~/ide/dotfiles/wezterm β ~/.config/wezterm - π¨ Terminal Setup: Configures terminal with transparency and themes
- π Secure API Setup: Stores keys in
.zshrc.localor.bashrc.local - β¨ Shell Enhancement: Installs the tools for the selected shell profile
- π₯οΈ iTerm2 Integration: Configures status bar and shell integration (macOS)
~/ide/ # Main installation directory
βββ dotfiles/ # Dotfiles (symlinked to ~/.config/)
β βββ nvim/ # Neovim configuration
β β βββ init.lua # Entry point
β β βββ lua/
β β βββ config/ # Core settings
β β βββ plugins/ # Plugin configurations
β βββ zsh/ # macOS Zsh configuration
β β βββ .zshrc # Main config with 30+ features
β β βββ .p10k.zsh # Cyberpunk theme config
β βββ bash/ # Ubuntu Bash, Readline and ble.sh config
β βββ shell-common/ # Portable environment, aliases and functions
β βββ platform/ubuntu/ # Ubuntu command compatibility
β βββ starship/ # Ubuntu prompt configuration
β βββ alacritty/ # Terminal config
β βββ wezterm/ # Alternative terminal
β βββ scripts/ # Setup and utility scripts
βββ README.md # This file
~/.zshrc # Sources ~/ide/dotfiles/zsh/.zshrc
~/.zshrc.local # Local config (API keys, not tracked)
~/.bashrc # Ubuntu link to ~/ide/dotfiles/bash/.bashrc
~/.bashrc.local # Ubuntu secrets and machine-local overrides
The cyberpunk theme uses these neon colors:
- Hot Pink (
#FF0066): Error states, root user - Electric Cyan (
#00FFFF): Success states, timestamps - Matrix Green (
#00FF00): Python environments - Neon Purple (
#9966CC): Git status - Neon Orange (
#FF6600): Directory paths - Electric Blue (
#0066FF): User context
Edit ~/ide/dotfiles/zsh/.p10k.zsh:
# Cyberpunk neon colors
local neon_pink='198' # Hot neon pink
local neon_cyan='51' # Electric cyan
local neon_green='46' # Matrix green
# ... modify as desiredPut portable settings in dotfiles/shell-common/. Keep bindkey, setopt, Zinit and Powerlevel10k configuration in dotfiles/zsh/; keep bind, shopt, ble.sh and Bash completion configuration in dotfiles/bash/.
Only add a setting to shell-common when it is valid in both Bash and Zsh. Platform-specific command names such as Ubuntu's batcat and fdfind belong in dotfiles/platform/ubuntu/.
The tracked configuration is the source of truth and is normally linked into the home directory:
dotfiles/zsh/.zshrc -> ~/.zshrc
dotfiles/zsh/.p10k.zsh -> ~/.p10k.zsh
dotfiles/bash/.bashrc -> ~/.bashrc
dotfiles/bash/.inputrc -> ~/.inputrc
dotfiles/tmux/.tmux.conf -> ~/.tmux.conf
Preserve these performance decisions when extending it:
- NVM loads with
--no-use, avoiding automatic version selection during every startup. Homebrew Node is the default in a clean macOS session; runnvm use,nvm use <version>, or automate selection per project withdirenvwhen needed. - TheFuck initializes only when
fuckorfkis first used. - Zinit installation belongs in
dotfiles/scripts/setup.sh;.zshrcmust not clone plugins or perform network operations. - Powerlevel10k calculates Git state asynchronously. Avoid synchronous
git status, language-version commands, or network calls in prompt hooks. - Changing directories intentionally does not run
git fetchor automatically list files. Usegf/git fetchandl/llexplicitly. - Recoverable deletion is available as
delwhentrashis installed. Forced termination is explicit throughk9andka9; normalkillandkillallbehavior is preserved. - Ubuntu shell integrations for Starship, Zoxide and direnv are generated atomically into
~/.cache/ide-shellduring setup. - ble.sh loads before Bash configuration with deferred attachment; bash-completion loads before ble.sh's delayed FZF integration.
Reload configuration with a clean process:
exec zsh # Replace the current shell
exec bash # Reload the Ubuntu profile
tmux source-file ~/.tmux.conf # Reload an existing tmux serverPrefer exec zsh over repeatedly sourcing .zshrc; it produces a clean, reproducible initialization test.
Add plugins in ~/ide/dotfiles/nvim/lua/plugins/:
-- New plugin example
{
"author/plugin-name",
event = "VeryLazy", -- Lazy load
keys = "<leader>key", -- Load on keypress
opts = {
-- plugin configuration
},
}- Get API Key: Visit Anthropic Console
- Installation Prompt: The installer will securely prompt for your key
- Manual Setup: Add to
~/.zshrc.localon macOS or~/.bashrc.localon Ubuntu:export ANTHROPIC_API_KEY="your-actual-key-here"
- API keys are stored in the selected shell's
.localfile (not tracked by Git) - Input is hidden during installation
- Keys never committed to version control
- Local configuration file is automatically gitignored
Languages with automatic LSP setup:
- JavaScript/TypeScript: tsserver, ESLint, Prettier
- Python: pyright, black, isort, ruff
- Rust: rust_analyzer, rustfmt
- Go: gopls, gofmt, goimports
- Lua: lua_ls, stylua
- HTML/CSS: html, cssls, prettier
- JSON/YAML: jsonls, yamlls
- Bash/Shell: bashls, shellcheck
Use Mason in Neovim:
:Mason # Open LSP installer
:MasonInstall pyright # Install specific LSP
:LspInfo # Check LSP statusPre-configured connections and tools:
dbc postgres # Connect to PostgreSQL
dbc mysql # Connect to MySQL
dbc mongo # Connect to MongoDB
dbc redis # Connect to RedisBuilt-in API testing:
api get https://api.example.com/users
api post https://api.example.com/users '{"name":"test"}'
http GET httpie.io/hello # HTTPie integrationQuick project setup:
pnew react my-app # Create React project
pnew nextjs my-site # Create Next.js site
pnew node my-api # Create Node.js API
psw # Switch between projectsPre-configured cloud tools:
k get pods # Kubernetes (kubectl)
aws s3 ls # AWS CLI
gcloud projects list # Google Cloud
az account list # Azure CLI# Install Nerd Fonts
brew install font-jetbrains-mono-nerd-font # macOS
# Or download from: https://github.com/ryanoasis/nerd-fontsnvim --headless "+Lazy! sync" +qa # Force plugin sync
# In Neovim:
:checkhealth # Check system health
:Lazy # Open plugin managerecho $ANTHROPIC_API_KEY # Verify key is set
# Add to ~/.zshrc.local (macOS) or ~/.bashrc.local (Ubuntu) if missing:
export ANTHROPIC_API_KEY="your-key"
exec "${SHELL:-/bin/bash}"# Check terminal true color support:
echo $TERM
# Should show: xterm-256color or similar
# In Neovim check: :checkhealth# Check if zsh is default shell:
echo $SHELL # Should be /bin/zsh
chsh -s /bin/zsh # Change default shell
# Validate and start a clean interactive shell:
zsh -n ~/.zshrc
exec zshBenchmark several interactive shells rather than judging a single cold launch:
for i in {1..5}; do
/usr/bin/time -p zsh -i -c exit >/dev/null
doneProfile Zsh functions when the benchmark regresses:
zsh -dfi -c 'zmodload zsh/zprof; source ~/.zshrc; zprof'External subprocesses do not appear fully in zprof. Also inspect new uses of eval "$(command init ...)", prompt hooks, version managers, and tmux #(...) status commands.
If something goes wrong:
# Remove symlinks and reinstall
rm ~/.config/nvim ~/.config/alacritty ~/.config/wezterm
cd ~/ide && git pull origin main
./dotfiles/scripts/setup.sh- Zsh shell: approximately 0.40β0.46 seconds on the reference Mac after warm-up
- Ubuntu Bash: benchmark after installation with the command in Troubleshooting; record a baseline before adding plugins
- Neovim: ~50ms (with lazy loading)
- Plugin loading: Deferred until needed
Treat approximately 0.5 seconds as the current Zsh regression ceiling. Before merging terminal changes, run the five-shell benchmark above and compare the median rather than the slowest cold run.
- Prefer shell functions, aliases, and static generated files over subprocesses executed during startup.
- Lazy-load expensive tools on first use, or generate their integration files during installation.
- Keep package installation, plugin cloning, and network access out of
.zshrc. - Do not run synchronous repository scans or language runtimes from prompt hooks.
- Remember that tmux
#(...)status commands run repeatedly for every attached client. Prefer native tmux formats and a conservativestatus-interval. - Test both a clean login environment and nested shells; inherited
PATHentries can hide NVM or Homebrew initialization mistakes. - Preserve cross-platform behavior and keep macOS/Linux commands inside their platform modules.
The terminal work is functional and passes Zsh/tmux validation, but these improvements remain open:
- Decide whether
rm,cat, andtopshould retain standard behavior or remain enhanced aliases. - Consider
POWERLEVEL9K_TRANSIENT_PROMPT=same-dirto reduce old prompt clutter. - Remove or cache the remaining tmux Git branch subprocess if continuous status polling is unnecessary.
See TERMINAL_IMPROVEMENTS.md for the original audit and implementation rationale.
- RAM: 4GB minimum, 8GB recommended
- Storage: 2GB for complete installation
- Terminal: True color support required
- Network: Internet connection for initial setup
We welcome contributions! Here's how:
- Fork: Click the fork button on GitHub
- Clone:
git clone https://github.com/YOUR-USERNAME/ide.git - Branch:
git checkout -b feature/amazing-feature - Develop: Make your changes
- Test: Test on fresh system if possible
- Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - PR: Open a Pull Request
- Keep the one-command installer working
- Maintain cross-platform compatibility
- Document new features
- Test with fresh installations
- Benchmark shell startup before and after terminal changes
- Keep prompt and tmux status work asynchronous or cached
- Follow the existing code style
MIT License - feel free to use, modify, and share!
- Neovim Community: For the amazing editor and plugins
- Anthropic: For Claude AI integration
- Powerlevel10k: For the beautiful terminal theme
- All Plugin Authors: Who make this setup possible
If this setup helps your development workflow:
- Star this repository β
- Share with fellow developers π€
- Report bugs and suggest features π
- Contribute improvements πͺ
Built with β€οΈ for developers who love beautiful, functional terminals
π Get Started β’ β¨οΈ Keybindings β’ π Help β’ π€ Contribute