Skip to main content

Neovim

Neovim configuration using LazyVim as a base with custom settings.

Configuration Structure

dots/nvim/
├── init.lua                   # Entry point
└── lua/
    ├── config/
    │   ├── lazy.lua          # Plugin manager setup
    │   ├── options.lua       # Editor options
    │   └── keymaps.lua       # Keybindings
    └── plugins/              # Plugin configurations

Entry Point

init.lua
-- Globals
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
require("config.options")
require("config.keymaps")

Editor Options

Key settings from lua/config/options.lua:
options.lua
local opt = vim.opt

-- Indentation
opt.expandtab = true
opt.shiftwidth = 2
opt.tabstop = 2
opt.smartindent = true

-- Display
opt.number = true
opt.relativenumber = false
opt.signcolumn = "yes"
opt.wrap = false

-- Search
opt.ignorecase = true
opt.smartcase = true
opt.hlsearch = true

-- Behavior
opt.mouse = "a"
opt.clipboard = "unnamedplus"    # System clipboard
opt.undofile = true
opt.undolevels = 10000

-- Performance
opt.updatetime = 200
opt.timeoutlen = 300

-- Splits
opt.splitbelow = true
opt.splitright = true

Autocmds

Automatic behaviors configured in options.lua:
vim.api.nvim_create_autocmd("InsertLeave", {
  callback = function()
    if vim.bo.modifiable and vim.bo.buftype == "" then
      vim.cmd("silent! w")
    end
  end,
})
vim.api.nvim_create_autocmd("TextYankPost", {
  callback = function()
    vim.highlight.on_yank({ higroup = "Visual", timeout = 200 })
  end,
})
vim.api.nvim_create_autocmd("BufWritePre", {
  callback = function()
    vim.cmd([[%s/\\s\\+$//e]])
  end,
})
vim.api.nvim_create_autocmd("BufReadPost", {
  callback = function()
    local line = vim.fn.line("'\"")
    if line > 1 and line <= vim.fn.line("$") then
      vim.cmd('exe "normal! g\'\\""')
    end
  end,
})

Kitty Terminal

Highly customizable GPU-accelerated terminal emulator.

Main Configuration

kitty.conf
# Include theme and keybindings
include ./theme.conf
include ./keybindings.conf

# Font configuration
font_family      JetBrainsMono Nerd Font Mono
bold_font        JetBrainsMono Nerd Font Mono Bold
italic_font      JetBrainsMono Nerd Font Mono Italic
font_size        13.0
line_height      1.2

# Font features (ligatures)
disable_ligatures never
font_features JetBrainsMonoNFM-Regular +zero +ss01 +cv14

# Window appearance
background_opacity    0.50
background_blur       1

window_border_width  0
window_margin_width  0
window_padding_width 12
window_padding_height 4

# Tab bar
tab_bar_edge            top
tab_bar_style           fade
tab_powerline_style     slanted
tab_title_template      "{fmt.fg.red}{activity_symbol}{fmt.fg.tab}{index}:{title}"

# Cursor
cursor_shape               beam
cursor_beam_thickness      2.0
cursor_blink_interval      0.5

# Performance
repaint_delay   5
input_delay     1
sync_to_monitor yes

# Scrollback
scrollback_lines 50000

# Shell
shell zsh
Kitty’s GPU acceleration and advanced features make it ideal for development work and terminal-heavy workflows.

Key Features

50% Transparency

Background opacity set to 0.50 with blur for aesthetics

Ligatures Enabled

Programming ligatures for better code readability

50K Scrollback

Massive scrollback buffer for reviewing output

GPU Accelerated

Hardware acceleration for smooth rendering

VS Code

Configuration focused on aesthetics and productivity.

Theme & Appearance

settings.json
{
  "workbench.colorTheme": "Tokyo Night Storm",
  "workbench.productIconTheme": "fluent-icons",
  "workbench.iconTheme": "symbols",
  "workbench.activityBar.location": "top",
  "workbench.sideBar.location": "right",
  "window.titleBarStyle": "custom"
}

Editor Settings

settings.json
{
  "editor.fontFamily": "'JetBrains Mono Nerd Font', monospace",
  "editor.fontWeight": "bold",
  "editor.fontSize": 14,
  "editor.fontLigatures": true,
  "editor.lineHeight": 1.4,
  
  "editor.formatOnSave": true,
  "editor.formatOnPaste": true,
  "editor.tabSize": 2,
  
  "editor.minimap.enabled": false,
  "editor.cursorBlinking": "expand",
  "editor.cursorSmoothCaretAnimation": "on",
  
  "editor.bracketPairColorization.enabled": true,
  "editor.stickyScroll.enabled": true
}

File Management

settings.json
{
  "files.autoSave": "afterDelay",
  "files.autoSaveDelay": 1000,
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "files.trimFinalNewlines": true,
  
  "files.exclude": {
    "**/.git": true,
    "**/node_modules": true,
    "**/dist": true,
    "**/.next": true
  }
}

Terminal Integration

settings.json
{
  "terminal.integrated.defaultProfile.linux": "zsh",
  "terminal.integrated.fontFamily": "'Hack Nerd Font Mono', monospace",
  "terminal.integrated.fontSize": 14,
  "terminal.integrated.cursorBlinking": true,
  "terminal.integrated.scrollback": 10000,
  "terminal.integrated.gpuAcceleration": "on"
}

Git Configuration

settings.json
{
  "git.enableSmartCommit": true,
  "git.autofetch": true,
  "git.confirmSync": false,
  "git.postCommitCommand": "sync",
  "scm.diffDecorations": "all"
}

Fastfetch

System information tool for displaying system specs.

Location

dots/fastfetch/
├── config.jsonc           # Main configuration
└── ascii.txt              # Custom ASCII art
Fastfetch is a faster alternative to neofetch written in C, optimized for performance.

Waybar

Wayland status bar for Hyprland.

Configuration Files

hyprland/waybar/
├── config.jsonc           # Bar modules and layout
└── style.css              # Styling and colors

Features

  • Workspace indicators
  • System tray
  • Clock and calendar
  • Network status
  • Audio volume
  • CPU/Memory usage
  • Custom modules
Waybar is highly customizable via CSS and supports custom scripts for additional functionality.

Rofi

Application launcher and window switcher.

Configuration

hyprland/rofi/
└── config.rasi            # Theme and behavior

Usage

  • Super + D: Launch rofi in drun mode (application launcher)
  • Super + Tab: Window switcher
  • Fuzzy search for quick application access

Mako

Lightweight notification daemon for Wayland.

Configuration

config
# Notification appearance and behavior
# Located at: hyprland/mako/config

Features

  • Custom styling
  • Notification grouping
  • Action support
  • History management

Bat

Cat replacement with syntax highlighting.

Configuration

dots/bat/
└── config               # Bat settings

Usage in Aliases

alias bat='bat --style=plain'
alias bcat='bat --style=full'     # Full decorations

Application Locations Quick Reference

Neovim

dots/nvim/

Kitty

dots/kitty/

VS Code

dots/code/settings.json

Fastfetch

dots/fastfetch/

Waybar

hyprland/waybar/

Rofi

hyprland/rofi/

Mako

hyprland/mako/

Bat

dots/bat/

Next Steps

Shell Configuration

Customize Zsh aliases and functions

Hyprland Setup

Configure window manager behavior

Build docs developers (and LLMs) love