A macOS development environment tuned around Nix, Neovim, WezTerm, and fast terminal workflows.
Terminal background artwork by @avocadoneko.
This repository is the source of truth for my ~/.config.
It is built for a keyboard-first macOS setup: reproducible packages through Nix, a Lua-based Neovim IDE, a highly customized terminal stack, and small CLI tools wired together for day-to-day engineering work.
| Area | Tools |
|---|---|
| System | Nix, nix-darwin, Home Manager |
| Editor | Neovim nightly, Lua, LSP, Treesitter, Telescope |
| Terminal | WezTerm, Zellij, Starship, Fish |
| UI | SketchyBar, Fastfetch |
| CLI | GitHub CLI, lazygit, ghq, ripgrep, fd, fzf, eza, bat, zoxide |
| Files | Yazi, htop, btop |
| Dev | Go, Node.js, Rust, Terraform, Docker-adjacent tooling |
flake.nixdefines the macOS/Home Manager entrypoint.nvim/contains the editor configuration, split into options, keybinds, extensions, LSP, and templates.wezterm/keeps terminal appearance, keymaps, transparency, and background behavior isolated.zellij/provides modal terminal multiplexing with explicit pane/tab workflows.sketchybar/drives the macOS status bar with Lua modules and helper binaries.yazi/adds a fast terminal file manager with git-aware fetchers.
UI and appearance
| Plugin | Purpose |
|---|---|
folke/tokyonight.nvim |
TokyoNight Storm color scheme with transparent editor background. |
nvim-lualine/lualine.nvim |
Global status line. |
akinsho/bufferline.nvim |
Buffer tabs and diagnostics. |
goolord/alpha-nvim |
Start dashboard. |
folke/noice.nvim + rcarriga/nvim-notify |
Command-line, messages, and notifications UI. |
j-hui/fidget.nvim |
Compact LSP progress indicators and notification history. |
Bekaboo/dropbar.nvim |
File-path and symbol breadcrumbs in the winbar. |
shellRaining/hlchunk.nvim |
Indent guides and scope highlighting. |
echasnovski/mini.animate |
Small UI animations. |
nvim-tree/nvim-web-devicons |
Filetype icons. |
MeanderingProgrammer/render-markdown.nvim |
Rendered Markdown previews in-buffer. |
Navigation and files
| Plugin | Purpose |
|---|---|
nvim-telescope/telescope.nvim |
Fuzzy finding for files, text, buffers, and more. |
nvim-telescope/telescope-file-browser.nvim |
File-browser picker for Telescope. |
nvim-telescope/telescope-project.nvim |
Project picker for Telescope. |
tom-anders/telescope-vim-bookmarks.nvim + MattesGroeger/vim-bookmarks |
Bookmark search and management. |
nvim-tree/nvim-tree.lua |
Sidebar file explorer. |
stevearc/oil.nvim |
Edit directories like regular buffers. |
folke/flash.nvim |
Fast jump navigation. |
kevinhwang91/nvim-hlslens |
Search match count and navigation lens. |
dnlhc/glance.nvim |
Definitions, references, and implementations picker. |
rmagatti/auto-session |
Saves and restores files, tabs, splits, and terminals per project and Git branch. Session picker: <leader>ps. |
Coding and language support
| Plugin | Purpose |
|---|---|
neovim/nvim-lspconfig |
Language Server Protocol configuration. |
williamboman/mason.nvim + williamboman/mason-lspconfig.nvim |
Install and connect language servers. |
nvimtools/none-ls.nvim + jay-babu/mason-null-ls.nvim |
External formatters and linters through LSP. |
nvim-treesitter/nvim-treesitter + textobjects |
Syntax highlighting, structural selection, and text objects. |
hrsh7th/nvim-cmp |
Completion menu. |
L3MON4D3/LuaSnip + rafamadriz/friendly-snippets |
Snippet engine and snippet collection. |
onsails/lspkind-nvim |
Icons and labels in completion items. |
windwp/nvim-autopairs |
Automatic bracket and quote pairs. |
numToStr/Comment.nvim |
Line and block comments. |
echasnovski/mini.surround |
Add, delete, and replace surrounding pairs. |
mattn/vim-sonictemplate |
Template insertion. |
Git, terminal, and tasks
| Plugin | Purpose |
|---|---|
lewis6991/gitsigns.nvim |
Git change signs, hunk staging, and previews. |
sindrets/diffview.nvim |
Side-by-side Git diff and file-history views. |
stevearc/overseer.nvim |
Project task runner and job manager. |
akinsho/toggleterm.nvim |
Toggleable terminal windows. |
kazhala/close-buffers.nvim |
Close buffers while preserving window layout. |
folke/trouble.nvim |
Diagnostics, quickfix, and location-list UI. |
.
├── flake.nix
├── justfile
├── nix/
│ ├── darwin/
│ └── home/
├── nvim/
├── wezterm/
├── zellij/
├── sketchybar/
├── yazi/
├── fish/
├── btop/
├── fastfetch/
└── img/
This repo is intended to live directly at ~/.config.
- Install Nix with flakes enabled.
- Install nix-darwin.
- Clone this repository to
~/.config. - Apply the host configuration.
cd ~/.config
just switchWithout just:
cd ~/.config
darwin-rebuild switch --flake .#fujimotoikkinoMacBook-Air-2just fmt # format Nix files
just check # evaluate flake outputs without building
just dry-run # show what Nix would build/fetch
just build # build the darwin system closure
just switch # apply the darwin configuration
just update # update flake.lockThis is a personal environment, not a generic starter kit. Secrets, machine-local state, caches, and app-generated databases are intentionally excluded from git.
The goal is simple: keep the actual working config under version control, without copying files back and forth.