A lightweight, highly customized Neovim configuration tailored for security researchers, bug bounty hunters, and penetration testers. Built with performance and efficiency in mind for daily security testing workflows.
As a security enthusiast who regularly breaks and tests systems, I needed a development environment that is:
- Lightweight - Fast startup and minimal resource usage
- Reliable - Stable enough for daily security research
- Customizable - Easily adaptable to evolving workflows
- Efficient - Optimized for rapid development and testing
This configuration prioritizes functionality over flashy features, providing a solid foundation for security research and development work.
- LazyVim-based: Built on the excellent LazyVim framework for sensible defaults
- Language Support: Preconfigured for Go, Python, JavaScript, Rust, Shell scripting, and web development
- Smart Completion: Blink.cmp with Copilot and Codeium AI assistance
- Live Development: Built-in live server for web testing and development
- Git Integration: Comprehensive Git workflow support
- Symbol Navigation: Aerial plugin for code structure overview
- Auto-save: Intelligent auto-save with configurable triggers
- Catppuccin & Tokyo Night: Beautiful, eye-friendly color schemes
- Dashboard: Custom startup screen with quick access shortcuts
- Bufferline: Enhanced buffer management
- Statusline: Informative lualine configuration
- Noice: Modern UI for messages, cmdline, and popups
- Fuzzy Finding: Telescope and fzf-lua for rapid file navigation
- LSP Support: Full Language Server Protocol integration
- Format on Save: Automatic code formatting with conform.nvim
- Linting: Real-time code analysis with nvim-lint
- Treesitter: Advanced syntax highlighting and code understanding
- Debugging: DAP integration for debugging sessions
- Neovim >= 0.9.0
- Git >= 2.19.0
- Node.js (for Copilot and some LSPs)
- Python 3 (for Python development)
- Go (for Go development)
- Rust (optional, for Rust development)
- A Nerd Font (recommended: JetBrainsMono Nerd Font)
Arch Linux (with Hyprland):
sudo pacman -S neovim git nodejs npm python python-pip
yay -S ttf-jetbrains-mono-nerd # or your preferred AUR helper- Backup existing configuration (if any):
mv ~/.config/nvim ~/.config/nvim.backup
mv ~/.local/share/nvim ~/.local/share/nvim.backup
mv ~/.local/state/nvim ~/.local/state/nvim.backup
mv ~/.cache/nvim ~/.cache/nvim.backup- Clone this repository:
git clone https://github.com/b1kr3m/PDE.git ~/.config/nvim- Install dependencies:
# Install Python formatters (optional)
pip install black isort- Launch Neovim:
nvimLazyVim will automatically install all plugins on first launch.
~/.config/nvim/
โโโ init.lua # Entry point
โโโ lua/
โ โโโ config/
โ โ โโโ autocmds.lua # Auto commands
โ โ โโโ keymaps.lua # Custom key mappings
โ โ โโโ lazy.lua # Plugin manager setup
โ โ โโโ options.lua # Neovim options
โ โโโ plugins/
โ โโโ editor/ # Editor enhancement plugins
โ โ โโโ aerial.lua # Symbol outline
โ โ โโโ auto-save.lua # Auto-save functionality
โ โ โโโ live-server.lua # Web development server
โ โ โโโ telescope.lua # Fuzzy finder
โ โโโ lang/ # Language-specific configs
โ โ โโโ css.lua # CSS/SCSS/Tailwind
โ โ โโโ go.lua # Go development
โ โ โโโ html.lua # HTML + Emmet + Live Server
โ โ โโโ javascript.lua # JavaScript + ESLint
โ โ โโโ python.lua # Python development
โ โ โโโ react.lua # React JSX/TSX helpers
โ โ โโโ rust.lua # Rust development
โ โ โโโ shell.lua # Shell scripting
โ โ โโโ typescript.lua # TypeScript + TS Server
โ โโโ ui/ # UI enhancements
โ โโโ dashboard.lua # Startup dashboard
โโโ lazy-lock.json # Plugin version lock
โโโ lazyvim.json # LazyVim extras
โโโ stylua.toml # Lua formatter config
| Mode | Key | Action | Description |
|---|---|---|---|
| Insert | jj |
<Esc> |
Quick escape to normal mode |
| Normal | <leader>cs |
:AerialToggle |
Toggle symbol outline |
| Normal | <leader>as |
:ASToggle |
Toggle auto-save |
| Normal | <leader>cL |
:LiveServerStart |
Start live server (HTML files) |
| Normal | <leader>cl |
:LiveServerStop |
Stop live server |
For a complete list of default LazyVim keybindings, see LazyVim Keymaps.
Most Used:
<leader>ff- Find files<leader>fg- Live grep<leader>e- Toggle file explorer<leader>gg- LazyGit<C-/>- Toggle terminal
- LazyVim - Neovim config framework
- lazy.nvim - Plugin manager
- telescope.nvim - Fuzzy finder
- neo-tree.nvim - File explorer
- nvim-treesitter - Syntax parsing
- blink.cmp - Completion engine
- copilot.lua - GitHub Copilot integration
- codeium.nvim - Codeium AI integration
- conform.nvim - Code formatting
- nvim-lint - Linting
- catppuccin - Color scheme
- tokyonight.nvim - Color scheme
- lualine.nvim - Status line
- bufferline.nvim - Buffer tabs
- noice.nvim - Modern UI
- LSPs: gopls, pyright, rust-analyzer, typescript-language-server, html-lsp, css-lsp
- Formatters: gofumpt, black, prettier, shfmt
- Linters: shellcheck, eslint_d
Edit lua/config/lazy.lua to modify the colorscheme preference:
install = { colorscheme = { "catppuccin", "tokyonight" } },Create a new file in lua/plugins/lang/ following the existing patterns. Example structure:
return {
-- Treesitter
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, { "your-language" })
end,
},
-- LSP configuration
{
"neovim/nvim-lspconfig",
opts = {
servers = {
your_lsp = {},
},
},
},
}This config now supports a proper React workflow out of the box:
tsx,typescript,javascript,javascriptreact, andtypescriptreactvia Treesitterts_lsfor TypeScript/JavaScript language featureseslintandeslint_dfor React/TypeScript lintingtailwindcssLSP for Tailwind projectsemmet_lsfor fast JSX/TSX markup expansionprettierd/prettierfor formatting
For a React project, install the project-side tools as well:
npm install -D typescript eslint prettier @types/react @types/react-domIf you use Vite:
npm create vite@latest my-app -- --template react-ts
cd my-app
npm installThen open the project with:
nvim .On first launch inside Neovim:
- Run
:Masonand confirmtypescript-language-server,eslint-lsp,tailwindcss-language-server,prettierd, andemmet-lsare installed. - Open a
.tsxfile and run:LspInfoto verifyts_lsis attached. - Run
:ConformInfoif formatting is not triggering.
Recommended filetypes for React work:
.tsxfor React components written in TypeScript.tsfor utility/modules without JSX.jsxonly if the project is JavaScript-based.jsfor non-React plain JavaScript
Edit lua/plugins/ui/dashboard.lua to customize the startup screen, including shortcuts and ASCII art.
Happy Hacking! ๐