Skip to content

rockitdev/ide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Portable Neovim IDE with Cyberpunk Terminal

A complete development environment featuring Neovim IDE, cyberpunk-themed terminal with 30+ enhancements, and full-stack developer tooling. One command installs everything.

Neovim Lua Shell Script

✨ Features

  • 🎨 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

πŸš€ Quick Installation

New Computer Setup (Fresh Install)

One-command installation - Just run this and follow the prompts:

curl -fsSL https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bash

Or with wget:

wget -qO- https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bash

Existing Computer Setup

If 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.sh

The 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

Advanced Installation Options

Custom GitHub username:

GITHUB_USERNAME="your-username" curl -fsSL https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bash

Silent installation (no prompts):

curl -fsSL https://raw.githubusercontent.com/rockitdev/ide/main/dotfiles/install.sh | bash -s -- --silent

Update existing installation:

cd ~/ide
git pull origin main
./dotfiles/scripts/setup.sh

Run a specific local profile:

./dotfiles/scripts/install-macos-zsh.sh
./dotfiles/scripts/install-ubuntu-bash.sh

🎯 What Gets Installed

System Packages (Auto-detected by OS)

macOS (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

Terminal Enhancement (30+ Features)

Cyberpunk Prompts

  • 🌈 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

Productivity Tools

  • 🎨 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: pbcopy on macOS and tmux/OSC52 fallback on Linux

Developer Workflow

  • πŸ”§ 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

Neovim IDE Configuration

Core Editor

  • 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

AI Integration

  • 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

Git Powerhouse

  • Fugitive: Premier Git integration
  • Gitsigns: Inline Git decorations
  • Diffview: Beautiful diff visualization
  • Octo: GitHub issues and PRs in Neovim

⌨️ Key Bindings

Shell Editing and Navigation

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.

Leader Key: Space

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

Navigation & Workflow

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)

πŸ› οΈ Installation Details

What the Installer Does

  1. πŸ” System Detection: Automatically detects your OS and package manager
  2. πŸ“¦ Package Installation: Installs all required development tools
  3. πŸ”— 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
    
  4. 🎨 Terminal Setup: Configures terminal with transparency and themes
  5. πŸ” Secure API Setup: Stores keys in .zshrc.local or .bashrc.local
  6. ✨ Shell Enhancement: Installs the tools for the selected shell profile
  7. πŸ–₯️ iTerm2 Integration: Configures status bar and shell integration (macOS)

Directory Structure After Installation

~/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

🎨 Customization

Terminal Colors & Theme

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

Modifying Colors

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 desired

Adding Terminal Enhancements

Put 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/.

Shell Runtime Behavior

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; run nvm use, nvm use <version>, or automate selection per project with direnv when needed.
  • TheFuck initializes only when fuck or fk is first used.
  • Zinit installation belongs in dotfiles/scripts/setup.sh; .zshrc must 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 fetch or automatically list files. Use gf/git fetch and l/ll explicitly.
  • Recoverable deletion is available as del when trash is installed. Forced termination is explicit through k9 and ka9; normal kill and killall behavior is preserved.
  • Ubuntu shell integrations for Starship, Zoxide and direnv are generated atomically into ~/.cache/ide-shell during 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 server

Prefer exec zsh over repeatedly sourcing .zshrc; it produces a clean, reproducible initialization test.

Neovim Plugin Management

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
  },
}

πŸ” API Key Setup

Claude AI Integration

  1. Get API Key: Visit Anthropic Console
  2. Installation Prompt: The installer will securely prompt for your key
  3. Manual Setup: Add to ~/.zshrc.local on macOS or ~/.bashrc.local on Ubuntu:
    export ANTHROPIC_API_KEY="your-actual-key-here"

Security Notes

  • API keys are stored in the selected shell's .local file (not tracked by Git)
  • Input is hidden during installation
  • Keys never committed to version control
  • Local configuration file is automatically gitignored

🌍 Language Support

Pre-configured LSP Servers

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

Adding Language Support

Use Mason in Neovim:

:Mason                    # Open LSP installer
:MasonInstall pyright     # Install specific LSP
:LspInfo                  # Check LSP status

πŸš€ Full-Stack Development

Database Tools

Pre-configured connections and tools:

dbc postgres              # Connect to PostgreSQL
dbc mysql                 # Connect to MySQL  
dbc mongo                 # Connect to MongoDB
dbc redis                 # Connect to Redis

API Development

Built-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 integration

Project Management

Quick 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 projects

Cloud Integration

Pre-configured cloud tools:

k get pods                # Kubernetes (kubectl)
aws s3 ls                 # AWS CLI
gcloud projects list      # Google Cloud
az account list           # Azure CLI

πŸ› Troubleshooting

Common Issues

Fonts not displaying properly

# Install Nerd Fonts
brew install font-jetbrains-mono-nerd-font  # macOS
# Or download from: https://github.com/ryanoasis/nerd-fonts

Neovim plugins not loading

nvim --headless "+Lazy! sync" +qa  # Force plugin sync
# In Neovim:
:checkhealth                       # Check system health
:Lazy                             # Open plugin manager

Claude AI not responding

echo $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}"

Terminal colors not working

# Check terminal true color support:
echo $TERM
# Should show: xterm-256color or similar
# In Neovim check: :checkhealth

Zsh not loading enhancements

# 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 zsh

Shell startup becomes slow

Benchmark 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
done

Profile 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.

Reset Installation

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

πŸ“Š Performance

Startup Times

  • 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.

Terminal Performance Guardrails

  • 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 conservative status-interval.
  • Test both a clean login environment and nested shells; inherited PATH entries can hide NVM or Homebrew initialization mistakes.
  • Preserve cross-platform behavior and keep macOS/Linux commands inside their platform modules.

Known Terminal Follow-ups

The terminal work is functional and passes Zsh/tmux validation, but these improvements remain open:

  • Decide whether rm, cat, and top should retain standard behavior or remain enhanced aliases.
  • Consider POWERLEVEL9K_TRANSIENT_PROMPT=same-dir to 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.

System Requirements

  • RAM: 4GB minimum, 8GB recommended
  • Storage: 2GB for complete installation
  • Terminal: True color support required
  • Network: Internet connection for initial setup

🀝 Contributing

We welcome contributions! Here's how:

  1. Fork: Click the fork button on GitHub
  2. Clone: git clone https://github.com/YOUR-USERNAME/ide.git
  3. Branch: git checkout -b feature/amazing-feature
  4. Develop: Make your changes
  5. Test: Test on fresh system if possible
  6. Commit: git commit -m 'Add amazing feature'
  7. Push: git push origin feature/amazing-feature
  8. PR: Open a Pull Request

Development Guidelines

  • 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

πŸ“„ License

MIT License - feel free to use, modify, and share!

πŸ™ Acknowledgments

  • 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

⭐ Support This Project

If this setup helps your development workflow:

  1. Star this repository ⭐
  2. Share with fellow developers 🀝
  3. Report bugs and suggest features πŸ›
  4. Contribute improvements πŸ’ͺ

Built with ❀️ for developers who love beautiful, functional terminals

πŸš€ Get Started β€’ ⌨️ Keybindings β€’ πŸ› Help β€’ 🀝 Contribute

About

Setup of an IDE

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors