A cross-platform dotfiles template that provides a default and sane configuration for a modern development environment. Managed with chezmoi, these dotfiles deliver a consistent, opinionated setup focused on productivity and modern tooling.
This repository is designed to give you a batteries-included development environment that:
- Uses Fish Shell for intelligent autosuggestions and superior user experience
- Leverages modern Rust-based Unix tools (eza, bat, fd, rg) for better performance and UX
- Provides consistent configuration across macOS and Linux platforms
- Offers a modular architecture: a core layer is always installed, and additional modules are opt-in
Modern terminal setup with Fish shell, Starship prompt, and Rust-based tools
sh -c "$(curl -fsLS https://raw.githubusercontent.com/artefactory/artefiles/main/install.sh)"This is the recommended path. The script:
- Installs GitHub CLI if not already present
- Authenticates you with GitHub (interactive browser flow, or reads a token from the environment β see below)
- Installs chezmoi and runs
chezmoi init --apply
Why not
curl get.chezmoi.io | sh ... init --applydirectly?.chezmoi.toml.tmplcallsgh api userat init time to pre-populate your name and email. GitHub CLI must be installed and authenticated beforechezmoi initruns.install.shenforces that order; the chezmoi-direct path does not.
For headless environments where a browser login is not possible, set a GitHub token before running the script:
export GH_TOKEN=ghp_your_token_here
sh -c "$(curl -fsLS https://raw.githubusercontent.com/artefactory/artefiles/main/install.sh)"GITHUB_TOKEN is also accepted and is set automatically in GitHub Actions. In Codespaces the token is already in the environment, so no extra configuration is needed beyond adding this repository as your dotfiles source.
These dotfiles can automatically bootstrap your GitHub Codespace environment:
- Add this repository as your dotfiles in your GitHub Codespaces settings
- Create a new codespace β it will automatically apply these dotfiles using
install.sh
Learn more about Codespaces dotfiles in the official documentation.
If you prefer to manage prerequisites yourself before running chezmoi directly:
-
Install Homebrew (macOS):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install GitHub CLI using your preferred method for your platform.
-
Authenticate with GitHub CLI following the official instructions, or set
GH_TOKENin your environment. -
Install these dotfiles directly with chezmoi:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b $HOME/.local/bin init --apply artefactory/artefiles
Artefiles uses a core + opt-in modules design. During chezmoi init, you select which modules to enable via an interactive prompt.
Fish, Starship, Git, bat, eza, fd, fzf, ripgrep, zoxide, rip2, dust, bottom, direnv, uv, Rust, FiraCode Nerd Font, VS Code.
| Module | Contents | Description |
|---|---|---|
editor |
Neovim | Terminal editor with nvim aliases |
terminal |
Ghostty | Modern GPU-accelerated terminal emulator |
git_advanced |
jj, mergiraf, difftastic, git-cliff, git-lfs, git-extras | Advanced version control tooling |
atuin |
Atuin | Shell history sync across machines |
python_dev |
nbdime, pre-commit (via uv) | Python/Jupyter development tools |
gcloud |
Google Cloud SDK | Google Cloud CLI (cask on darwin, manual install on linux) |
colima |
Colima | Container runtime (darwin only) |
multiplexer |
Zellij | Terminal multiplexer |
aerospace |
AeroSpace | Tiling window manager (darwin only) |
onepassword |
1Password, 1Password CLI | Password manager (darwin only) |
Re-run chezmoi init to update your module selection, then chezmoi apply.
- π Fish Shell - A smart command-line shell that suggests commands as you type and has better tab completion than traditional shells
- β‘ Starship - A customizable terminal prompt that shows useful information like git status, programming language versions, and execution time
- π Modern CLI Tools - Faster, more user-friendly replacements for traditional Unix commands:
bat- Enhanced version ofcatwith syntax highlighting and line numberseza- Betterlswith colors, git status, and tree viewfd- Faster, easier-to-use alternative tofindfor searching filesfzf- Fuzzy finder for quickly searching through files and command historyrip- Safermreplacement with a recoverable graveyardripgrep- Lightning-fast text search across files
- π Catppuccin - A beautiful, consistent color theme applied across all tools for a cohesive look
- π Neovim (
editor) - A powerful text editor with syntax highlighting, plugins, and modern features - π Advanced Git (
git_advanced) - Jujutsu, mergiraf, difftastic, git-cliff, Git LFS, and git-extras (~80 helper subcommands likegit summary,git undo,git ignore,git wip) - π Jupyter Notebook Support (
python_dev) - nbdime and pre-commit via uv - π Container Development (
cloud) - Colima for running Docker containers on macOS without Docker Desktop - β° Shell History (
atuin) - Atuin syncs your command history across machines with powerful search - π Smart Navigation - Zoxide learns your most-used directories for instant navigation
~/.gitconfig- Git configuration with modern defaults (Git Documentation)~/.gitattributes_global- Global attributes for merge drivers and file handling
~/.config/ghostty/config- Ghostty terminal configuration (Ghostty Documentation) (requiresterminalmodule)
~/.config/Code/User/settings.json(Linux) β Default VS Code settings (Catppuccin theme, FiraCode font, fish terminal, Ruff formatter). Created on first apply only; your edits are never overwritten onchezmoi update.~/Library/Application Support/Code/User/settings.json(macOS) β Same default VS Code settings as the Linux path above. Created on first apply only; never overwritten onchezmoi update.
Fish Shell Configuration (Fish Shell Documentation)
~/.config/fish/config.fish- Main Fish shell configuration~/.config/fish/aliases.fish- Shell aliases and functions~/.config/fish/conf.d/artefiles_abbrs.fish- Fish abbreviations managed by chezmoi~/.config/fish/fish_plugins- Fish plugin list~/.config/fish/functions/fish_title.fish- Terminal title function~/.config/fish/functions/smart_bat.fish- Enhanced bat function (VSCode-aware)~/.config/fish/functions/dotfiles_doctor.fish- Health check function
~/.config/starship.toml- Shell prompt configuration (Starship Documentation)
- Configuration guide - module reference and syntax
- Presets gallery - ready-made prompt styles
- Catppuccin theme - palette currently in use
~/.config/bat/config- Syntax highlighter configuration (Bat Documentation)~/.config/direnv/direnvrc- Environment management (Direnv Documentation)~/.config/uv/uv.toml- Python package manager configuration (uv Documentation)~/.config/atuin/config.toml- Shell history sync (Atuin Documentation) (requiresatuinmodule)~/.config/nvim/init.lua- Neovim editor configuration (Neovim Documentation) (requireseditormodule)
~/.config/aerospace/aerospace.toml(macOS) - AeroSpace window manager (AeroSpace Documentation) (requiresmacos_desktopmodule)
- A GitHub account (for git and GitHub-related features)
- For non-interactive environments, set
GH_TOKENorGITHUB_TOKENbefore installation
- For non-interactive environments, set
- SSH keys added to your GitHub account (instructions)
After installation, you will need to change your default shell to Fish to get the full experience β see Post-Installation Steps.
| Task | Command |
|---|---|
| Update dotfiles | chezmoi update |
| Edit config | chezmoi edit <path> |
| Health check | dotfiles_doctor |
| New Python project | mkdir project && cd project && echo 'layout uv' > .envrc && direnv allow |
Chezmoi is the manager for these dotfiles. Main docs: https://www.chezmoi.io/user-guide/command-overview/
| Task | Command |
|---|---|
| See pending changes | chezmoi status |
| Inspect diffs | chezmoi diff |
| Edit a file | chezmoi edit ~/.config/fish/config.fish |
| Apply changes | chezmoi apply |
| Update from repo | chezmoi update |
Review first:
chezmoi managed -p absoluteRemove all managed files, then remove chezmoi state/source:
chezmoi managed -p absolute -0 | xargs -0 chezmoi destroy --force
chezmoi purge --force~/.config/
βββ aerospace/ # macOS window manager (macos_desktop module)
βββ atuin/ # Shell history sync (atuin module)
βββ bat/ # Syntax highlighting
βββ direnv/ # Environment management
βββ fish/ # Shell configuration
β βββ config.fish # Main shell configuration
β βββ aliases.fish # Shell aliases and functions
β βββ functions/ # Custom fish functions
βββ ghostty/ # Terminal emulator (terminal module)
βββ nvim/ # Editor configuration (editor module)
βββ uv/ # Python package manager
βββ starship.toml # Prompt configuration
~/.ssh/config # SSH configuration
~/.gitconfig # Git configuration
install.sh does not change your default shell β this requires sudo and is a deliberate user choice.
Set Fish as your default login shell after installation:
macOS:
command -v fish | sudo tee -a /etc/shells
chsh -s $(brew --prefix)/bin/fishLinux:
chsh -s $(which fish)You may need to log out and back in for the shell change to take effect. If you're using VS Code or another IDE, fully quit and reopen it so the Fish profile shows up in the terminal list.
atuin register # New account
atuin login # Existing accountgcloud init # Set up Google Cloud SDKRestart your terminal (or fully quit and reopen your IDE if using VS Code, Cursor, etc.) for all changes to take effect.
- Run
dotfiles_doctorto check your installation - See
chezmoi helpfor dotfiles management - Check the CHEATSHEET.md for more commands
- Reset a file:
chezmoi apply --force <path>
- CHEATSHEET.md - Common commands and shortcuts
- CHANGELOG.md - Version history and updates
MIT