https://github.com/tma15/dotfiles
Personal dotfiles
https://github.com/tma15/dotfiles
cmux dotfiles pyenv tmux vscode zsh
Last synced: 22 days ago
JSON representation
Personal dotfiles
- Host: GitHub
- URL: https://github.com/tma15/dotfiles
- Owner: tma15
- License: apache-2.0
- Created: 2014-05-04T06:44:48.000Z (about 12 years ago)
- Default Branch: main
- Last Pushed: 2026-05-04T12:34:08.000Z (about 1 month ago)
- Last Synced: 2026-05-04T14:29:07.838Z (about 1 month ago)
- Topics: cmux, dotfiles, pyenv, tmux, vscode, zsh
- Language: Shell
- Homepage:
- Size: 171 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Dotfiles
[](https://github.com/tma15/dotfiles/actions/workflows/ci.yaml)
[](https://github.com/tma15/dotfiles/releases)
[](https://github.com/tma15/dotfiles/blob/main/LICENSE)
Personal dotfiles for shell, editor, terminal, and SSH setup on macOS and Linux.
Managed configs:
- `zsh`
- `vim`
- `Neovim`
- `tmux`
- `ssh`
- `Ghostty`
- `VS Code`
- local helper scripts
## Quick Start
### Requirements
- macOS or Linux
- `git`
- `curl`
- `zsh`
- `tar` on Linux when Neovim needs to be installed
### Install
```sh
git clone https://github.com/tma15/dotfiles.git
cd dotfiles
zsh init.zsh
```
`init.zsh` initializes submodules, backs up existing files when needed, creates
symlinks, installs Neovim on supported Linux systems when it is missing or too
old, and installs Deno if `$HOME/.deno/bin/deno` does not exist. Existing files
are backed up as `*.backup.`.
Set `DOTFILES_SKIP_NVIM_INSTALL=1` before running `init.zsh` to manage Neovim
outside this bootstrap.
## Local Overrides
Keep machine-specific values out of the repository.
- `~/.zshrc.local` for local paths, SDK setup, and secrets
- `~/.ssh/config.local` for host-specific SSH entries
- `zshrc.local.example` and `ssh/config.local.example` as templates
If you keep private files in a separate repository, place it at
`~/work/dotfiles-private` or set `DOTFILES_PRIVATE_DIR` before running
`init.zsh`.
When that overlay repository exists, `init.zsh` links:
- `zshrc.local` to `~/.zshrc.local`
- `ssh/config.local` to `~/.ssh/config.local`
## Managed Files
### Zsh
- `zprezto` is included as a git submodule
- Main shell settings live in `zpreztorc`
- `zshrc` puts `~/.local/bin` on `PATH` and sets up `pyenv`, Deno,
Prezto, and local overrides
- `zshrc` loads `~/.zshrc.local` first, then a repo-local `zshrc.local` if present
- For cmux relay behavior and SSH alias setup, see `docs/cmux.md`
### Vim
- Plugins are managed by `dein`
- Plugin lists live in `vim/dein/userconfig/plugins.toml` and
`vim/dein/userconfig/plugins_lazy.toml`
- Deno-backed completion plugins are supported, so `init.zsh` installs Deno
### Neovim
- `nvim/init.vim` reuses the shared Vim configuration from `~/.vimrc`
- `init.zsh` links it to `~/.config/nvim/init.vim`
- On Linux x86_64/arm64, `init.zsh` installs the official Neovim tarball to
`~/.local/opt/dotfiles/` and links `~/.local/bin/nvim` when no Neovim at
least `0.11.3` is available
### SSH
- Shared defaults live in `ssh/config`
- `ssh/config` includes `~/.ssh/config.local`
- Public defaults stay in `ssh/config`; identities, forwarding, and host aliases stay local
### tmux
- `tmux.conf` is installed by `init.zsh`
- tmux is kept as an explicit fallback; Prezto tmux auto-start and aliases are disabled
### Local Helpers
- `bin/md-preview-server` serves a single Markdown file for browser preview
- `init.zsh` links it to `~/.local/bin/md-preview-server`
- `init.zsh` also links the `cmux-markdown-preview` Codex skill to
`~/.codex/skills/cmux-markdown-preview` so it is available outside this repo
- In a remote cmux session, run the server on remote localhost and open it with
`cmux browser open`; see `docs/cmux.md`
### Ghostty
- `ghostty/config.ghostty` is linked to both
`~/.config/ghostty/config.ghostty` and `~/.config/ghostty/config`
### VS Code
- `vscode/settings.json` and `vscode/keybindings.json` are included
- `init.zsh` links them on macOS when the VS Code user settings directory exists
## Updating
After pulling new changes, update submodules and re-run setup if needed.
```sh
git pull origin main
git submodule update --init --recursive
zsh init.zsh
```
## Maintenance
- Releases are managed with `tagpr`
- GitHub Actions workflows live in `.github/workflows/`
- Weekly workflows check submodule updates and security/dependency issues
- Run local smoke tests with `zsh test/run.zsh`
- Repo-scoped Codex skills live in `.agents/skills/`
## Author
Takuya Makino