Skip to content

iliutaadrian/.config_files

Repository files navigation

Dev Environment Config

2026 Setup

My daily driver workflow built around tmux + Neovim + Claude Code, orchestrated by a single command: nic.

NIC Layout

NIC Layout

The NIC Layout

The core of this setup is a tmux function called nic (Neovim + AI + CLI) that creates a three-pane development layout:

+----------------------------+----------+
|                            |          |
|          Neovim            |  Claude  |
|          (70%)             |  Code    |
|                            |  (30%)   |
+----------------------------+----------+
|           Terminal (15%)              |
+---------------------------------------+

Type nic in any project directory and you get:

  • Left pane -- Neovim (LazyVim) as the editor
  • Right pane -- Claude Code (cx) as the AI assistant
  • Bottom pane -- Terminal for commands, tests, servers

There's also nichl for the same layout but tunneled into a homelab server via SSH, and unnic to tear it down cleanly.

Homelab NIC Layout


What Changed from 2025

Area 2025 2026
Shell config .bashrc (single file) ZSH (modular)
Editor LunarVim LazyVim
Prompt Basic Starship
AI assistant -- Claude Code
File listing exa eza
Navigation cd zoxide
File manager -- yazi
Setup Manual install.sh

Shell (ZSH)

Zapmarks

Moved from a monolithic .bashrc to a modular ZSH setup. The entry point .zshrc just sources ~/config/zsh/rc, which loads five focused files:

File Purpose
zsh/envs PATH, editor, FZF/bat config
zsh/shell History, vi mode, keybindings
zsh/aliases Short commands (ls, lg, cx, n)
zsh/functions Utility functions (nic, yy, fip)
zsh/init Tool init (starship, zoxide, fzf, direnv)
zsh/local Machine-specific overrides (not in git)

Key Aliases

Alias What it does
n Open Neovim (current dir if no args)
nv <file> Open file in existing Neovim instance
cx Claude Code with full permissions
lg Lazygit
t Attach or create tmux session
ls / lsa / lt eza with icons, tree view
ff fzf with bat preview
cd zoxide smart navigation
yy Yazi file manager (changes cwd on exit)

Key Functions

Function What it does
nic [ai] Open NIC dev layout
nichl [host] Same layout but SSH'd into homelab
unnic Tear down the layout cleanly
fip <host> <ports> SSH port forwarding
dip <ports> Stop port forwards
img2jpg, img2png Image conversion via ImageMagick
compress / decompress tar.gz helpers

Shell Features

  • Vi mode with cursor shape switching
  • History: 32K entries, deduplication
  • Completions: case-insensitive, colored, TAB cycling
  • Zapmarks (Ctrl+Z): saved command bookmarks

Neovim (LazyVim)

Migrated from LunarVim to LazyVim. Much cleaner config -- LazyVim provides excellent defaults and the custom layer is minimal.

Config Structure

nvim/
  init.lua                  # bootstraps lazy.nvim
  lua/config/
    lazy.lua                # plugin manager setup
    options.lua             # wrap off, nvim server socket
    keymaps.lua             # custom keybindings
    autocmds.lua            # auto-reload + diffview refresh
  lua/plugins/
    snacks.lua              # dashboard, picker, explorer
    tmux-navigator.lua      # Ctrl+h/j/k/l between panes
    diffview.lua            # git diff with auto-refresh
    undotree.lua            # visual undo history

What LazyVim Provides Out of the Box

  • snacks.nvim -- picker, explorer, dashboard, notifications
  • blink.cmp -- fast autocompletion
  • conform.nvim + nvim-lint -- formatting and linting
  • flash.nvim -- jump navigation
  • which-key.nvim -- keymap discovery
  • noice.nvim -- better UI for messages and cmdline
  • trouble.nvim -- diagnostics list
  • mini.surround -- surround motions (enabled as extra)
  • bufferline.nvim + lualine.nvim -- tabs and statusline

Custom Plugins Added

Plugin Purpose
vim-tmux-navigator Ctrl+h/j/k/l between panes
diffview.nvim Git diff viewer, auto-refresh
undotree Visual undo history

Custom Keymaps

Key Mode Action
<leader>W n,i,v Save file
<leader>Q n Close buffer
J / K v Move selected text down/up
U n Redo
+ / - n Increment / decrement number
! @ # $ % n Jump to buffer 1-5
<C-h/l/j/k> i Arrow movement in insert mode
<C-e> / <C-a> n,i End / start of line
<C-b> / <C-f> i Word backward / forward
<leader>a n Select all
<leader>rr n Reload file
<leader>gv n Open Diffview
<leader>gV n Current file history
<leader>ut n Toggle undo tree

Neovim Server Socket

A server socket is started at ~/.cache/nvim/server.pipe, allowing external tools (like Claude Code via nv <file>) to open files in the running Neovim instance.


Tmux

Setting Value
Prefix Ctrl+s (instead of Ctrl+b)
Split panes | horizontal, - vertical
Resize panes h/j/k/l with prefix
Mouse Enabled (with pbcopy integration)
Vi mode Enabled for copy mode
Base index 1 (windows and panes start at 1)

Quick-Launch Keybindings (prefix +)

Key Opens
g Lazygit in new window
y Yazi file manager in new window
b Btop system monitor in new window
q TinyQuery launcher in new window
t New window (replaces current)
C-u URL picker from pane content

Plugins

  • tpm -- plugin manager
  • vim-tmux-navigator -- pane navigation with Neovim
  • tmux-resurrect + tmux-continuum -- persist sessions
  • tmux-copycat -- regex search in tmux
  • tmux-open -- open URLs and files from tmux

Starship Prompt

Minimal prompt showing only what matters:

~/projects/my-app main ~1 +2
❯
  • Directory: full path, no truncation
  • Git branch: branch name
  • Git status: modified, staged, untracked counts
  • Vi mode indicator: (insert) / (normal)
  • Everything else disabled

Separate starship-homelab.toml adds user@hostname for SSH sessions.


AeroSpace (macOS Window Manager)

Tiling window manager for macOS. Config at aerospace/aerospace.toml.


Other Tools

Tool Purpose
fzf Fuzzy finder (history, files, completions)
bat Syntax-highlighted cat replacement
eza Modern ls with icons and git status
zoxide Smart cd that learns your directories
yazi Terminal file manager
lazygit Terminal git UI
direnv Auto-load .envrc per project
ripgrep Fast grep (used by Neovim pickers)
Nix Package manager (used on homelab)

Installation

git clone <repo> ~/config
cd ~/config
./install.sh

The install script symlinks:

  • ~/.zshrc -> ~/config/.zshrc
  • ~/.config/starship.toml -> ~/config/starship.toml
  • ~/.config/nvim -> ~/config/nvim
  • ~/.config/aerospace -> ~/config/aerospace (macOS only)

Tmux config (~/.tmux.conf) is in the repo but linked manually.



2025 Setup (Archive)

Click to expand the original 2025 configuration

Terminal ZSH Setup

  • FZF
  • BAT
  • EXA

Terminal ZSH

TMUX Setup

TMUX Setup

Neovim Setup

Needs: fzf, ripgrep, cmake

Neovim 1

Neovim 2

Plugin Manager

Navigating Between Neovim Windows and Tmux

File Explorer

Buffer Line

Keymap Suggestions

Fuzzy Finder

Autocompletion

Snippets

Managing & Installing Language Servers, Linters & Formatters

LSP Configuration

Formatting & Linting

Comments

Treesitter Syntax Highlighting, Autoclosing & Text Objects

About

ZSH, Tmux, NVIM

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors