https://github.com/delianides/dotfiles
My Dotfiles
https://github.com/delianides/dotfiles
dotfiles rcm shell tmux vim vimrc zsh
Last synced: about 2 months ago
JSON representation
My Dotfiles
- Host: GitHub
- URL: https://github.com/delianides/dotfiles
- Owner: delianides
- License: other
- Created: 2014-05-18T22:58:18.000Z (about 12 years ago)
- Default Branch: main
- Last Pushed: 2026-05-09T00:34:27.000Z (about 2 months ago)
- Last Synced: 2026-05-09T02:36:14.013Z (about 2 months ago)
- Topics: dotfiles, rcm, shell, tmux, vim, vimrc, zsh
- Language: Shell
- Homepage: http://dotfiles.github.io/
- Size: 7.07 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dotfiles [](https://github.com/delianides/dotfiles/actions/workflows/dotfiles.yml)
My personal macOS dotfiles, managed with [RCM](https://github.com/thoughtbot/rcm). Sets up a full development environment — shell, editors, terminals, and CLI tools — with a single `./install`.
## Installation
Clone into `~/.dotfiles` and run the installer:
```bash
git clone https://github.com/delianides/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install
```
The installer will:
1. Install Xcode command-line tools (if missing).
2. Install Homebrew, then run `Brewfile`, `Brewfile.casks`, and `Brewfile.mas`.
3. Switch the login shell to `zsh`.
4. Symlink dotfiles into `$HOME` via `rcup`.
5. Apply macOS system defaults from `system/macos`.
6. Install [asdf](https://asdf-vm.com/) language plugins (bun, node, python, ruby, rust, go) and the versions in `.tool-versions`.
7. Install [Claude Code](https://docs.claude.com/claude-code).
After install: remap Caps Lock to Control in System Settings, install tmux plugins with `prefix + I`, and install any non-Homebrew fonts you want manually.
## Usage
RCM commands (these are the day-to-day workflow):
| Command | What it does |
|---|---|
| `rcup -d .` | (Re)link all dotfiles into `$HOME`, respecting `rcrc` |
| `rcdn` | Remove all symlinks |
| `mkrc ` | Move a file into the dotfiles repo and replace it with a symlink. Use `-t ` to scope to a tag |
| `lsrc` | Show every dotfile and where it links to |
Shell helpers:
- `qq` or `reload!` — reload the current zsh session.
## Layout
Each `tag-*` directory is an [RCM tag](https://github.com/thoughtbot/rcm). The active tags (`shell editor terminal`, set in `rcrc`) tell `rcup` which directories to link. Files inside are symlinked into `$HOME` with the tag prefix stripped — `tag-shell/zshrc` becomes `~/.zshrc`, `tag-editor/config/nvim/` becomes `~/.config/nvim/`, and so on.
### `tag-shell` — shell, git, and CLI tooling
- **Zsh** — `zshenv`, `zshrc`, `aliases`. Plugins are sourced from Homebrew (no plugin manager).
- **Starship** prompt — config lives under `tag-terminal/config/starship.toml`.
- **Git** — `gitconfig` with [delta](https://github.com/dandavison/delta) as the pager and 1Password SSH commit signing. Conditional includes pick the right identity based on the working directory (`~/Work/`, `~/Github/`, `~/Gitlab/`).
- **asdf** — `asdfrc`, `tool-versions`, `default-*` package lists per language.
- **tmux** — `config/tmux/tmux.conf`, paired with [sesh](https://github.com/joshmedeski/sesh) for session management.
- **Other tools** — `config/direnv/`, `config/zellij/`, `config/worktrunk/`, plus a `bin/` directory of custom scripts.
- **Claude Code** — `claude/` holds settings and hooks.
### `tag-editor` — editors
- **Neovim** — [LazyVim](https://www.lazyvim.org/)-based config in `config/nvim/`. Plugin specs live in `lua/plugins/`, with extras and config split out into `lua/plugins/extras/` and `lua/config/`.
- **Helix** — `config/helix/`.
- **Zed** — `config/zed/` (settings and keybindings).
- **JetBrains IDEs** — `ideavimrc` for IdeaVim.
### `tag-terminal` — terminal emulators and prompt
- **Ghostty** — `config/ghostty/config`.
- **WezTerm** — `config/wezterm/wezterm.lua`.
- **cmux** — `config/cmux/` for the [cmux](https://github.com/cmux-app/cmux) terminal multiplexer.
- **Starship** — `config/starship.toml`.
## Brewfiles
Homebrew installs are split into three files:
- `Brewfile` — taps and CLI formulae (neovim, helix, ripgrep, fzf, gh, lazygit, kubernetes tooling, etc.).
- `Brewfile.casks` — GUI apps (Ghostty, WezTerm, Zed, Raycast, 1Password, Obsidian, Slack, Docker, fonts, …).
- `Brewfile.mas` — Mac App Store apps (installed via [`mas`](https://github.com/mas-cli/mas)).
## CI
`.github/workflows/dotfiles.yml` lints Lua on every push and PR:
- **luacheck** — static analysis for Neovim Lua.
- **StyLua** — formatting check (`stylua --check .`).