Skip to content
pdardenPublic

About

Setup for developing

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Neovim, tmux, fish and Homebrew configuration for macOS.

Prerequisites

  • Homebrew
  • macOS on Apple Silicon (paths assume /opt/homebrew)

Installation

git clone https://github.com/pdarden/dotfiles.git
cd dotfiles
bash install.sh

The installer is idempotent: it skips anything already linked, and reports rather than clobbers any ~/.foo that exists but isn't a symlink.

Afterwards:

  1. Put your identity in ~/.gitconfig.local (created by the installer). It's [include]d by the tracked gitconfig and never committed, since this repo is public:
    [user]
      name = Your Name
      email = you@example.com
  2. Copy ssh/config to ~/.ssh/config and adjust the hosts and key paths. The installer deliberately does not symlink it — ~/.ssh holds your private keys and shouldn't point into a public repo.
  3. Set Source Code Pro (or Hack Nerd Font) as your iTerm2 font. The Nerd Font variant supplies the statusline and file-tree glyphs.

What's in here

Path Links to What it is
config/nvim/ ~/.config/nvim Neovim, in Lua, managed by lazy.nvim
config/omf/ ~/.config/omf oh-my-fish init, aliases and functions
tmux.conf ~/.tmux.conf tmux, prefix is C-a
gitconfig ~/.gitconfig git aliases and defaults (identity left blank on purpose)
gitignore ~/.gitignore global ignores — OS and editor cruft only
ssh/config ~/.ssh/config template for per-host SSH keys

~/.config is shared with tools this repo doesn't manage, so install.sh links its subdirectories individually rather than the whole directory.

Neovim

Lua config under config/nvim/lua/, split into config/ (options, keymaps, autocmds) and plugins/ (one file per concern). lazy-lock.json is committed, so a fresh machine gets the exact plugin revisions this one runs.

Leader is <Space>.

  • LSP — native, via nvim-lspconfig + mason.nvim. Elixir, TypeScript, Python, Tailwind, HTML/CSS/JSON, Docker, Lua.
  • Completion — blink.cmp. Tab/S-Tab cycle, Enter accepts.
  • Syntax — Treesitter, including HEEx with Elixir injection, so Tailwind classes complete inside templates.
  • Finding — Telescope. <C-p> files, <leader>g live grep.
  • Formatting — conform.nvim on save: mix format, prettier, ruff, stylua, sql-formatter. Toggle with :FormatToggle.

Useful commands: :Lazy (plugins), :Mason (language servers), :ConformInfo (formatters), :checkhealth.

Phoenix navigation

:Econtroller, :Elive, :Econtext, :Ecomponent, :Echannel, :Emigration, :Erouter, :Etest, :Emix, :Econfig.

These come from projections registered against vim-projectionist in lua/plugins/elixir.lua. phoenix.vim is deliberately not used: its detection requires a top-level web/ directory, which Phoenix dropped in 1.3.

elixir-ls

Installed via Homebrew rather than Mason, so it builds against the same asdf-managed OTP/Elixir as your projects. The first time you open an Elixir project it compiles itself from source — expect a few minutes before diagnostics appear.

tmux

Prefix C-a. | and \ split panes. C-h/j/k/l moves between tmux panes and Neovim splits interchangeably (via vim-tmux-navigator). Copy mode is vi-style; y copies to the system clipboard.

Recommended apps

Not installed by install.sh — just what's worth having:

1Password · DBeaver · Docker · iTerm2 · Rectangle

About

Setup for developing

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages