|
| 1 | +# Josh's Dotfiles |
| 2 | + |
| 3 | +A personal dotfiles repository managed by [chezmoi](https://www.chezmoi.io/), for managing configuration files across multiple machines. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +This repository contains configuration files for: |
| 8 | +- **Bash shell** - Shell configuration and aliases |
| 9 | +- **Git** - Git configuration and global gitignore |
| 10 | +- **Neovim** - Neovim editor setup (NvChad configuration included) |
| 11 | +- **Environment variables** - Custom environment setup |
| 12 | + |
| 13 | +## Installation |
| 14 | + |
| 15 | +### Prerequisites |
| 16 | +- [chezmoi](https://www.chezmoi.io/install/) installed on your machine |
| 17 | +- Git installed |
| 18 | + |
| 19 | +### Quick Start |
| 20 | + |
| 21 | +Initialize chezmoi with this repository: |
| 22 | + |
| 23 | +```bash |
| 24 | +chezmoi init --apply https://github.com/joshjavier/dotfiles.git |
| 25 | +``` |
| 26 | + |
| 27 | +This will: |
| 28 | +1. Clone the repository to `~/.local/share/chezmoi` |
| 29 | +2. Apply all configurations to your home directory |
| 30 | + |
| 31 | +If you don't want to apply all configurations automatically, remove the `--apply` flag. |
| 32 | + |
| 33 | +### Manual Application |
| 34 | + |
| 35 | +If you already have the repository cloned: |
| 36 | + |
| 37 | +```bash |
| 38 | +chezmoi apply |
| 39 | +``` |
| 40 | + |
| 41 | +Or if you want to apply certain configs only: |
| 42 | + |
| 43 | +```bash |
| 44 | +chezmoi apply ~/.bashrc |
| 45 | +chezmoi apply ~/.config/nvim |
| 46 | +``` |
| 47 | + |
| 48 | +## File Structure |
| 49 | + |
| 50 | +``` |
| 51 | +. |
| 52 | +├── dot_bashrc # Bash shell configuration |
| 53 | +├── dot_gitconfig # Git configuration |
| 54 | +├── dot_gitignore_global # Global Git ignore rules |
| 55 | +├── dot_env # Environment variables |
| 56 | +├── dot_config/ # User config directory (~/.config) |
| 57 | +│ ├── nvim/ # Neovim configuration |
| 58 | +│ └── nvim-nvchad/ # NvChad plugin configuration |
| 59 | +└── executable_dot_azotebg # Custom executable script |
| 60 | +``` |
| 61 | + |
| 62 | +### Dotfile Naming Convention |
| 63 | + |
| 64 | +Files prefixed with `dot_` map to `~/.` in your home directory: |
| 65 | +- `dot_bashrc` → `~/.bashrc` |
| 66 | +- `dot_gitconfig` → `~/.gitconfig` |
| 67 | +- `dot_config/` → `~/.config/` |
| 68 | + |
| 69 | +Files prefixed with `executable_` are installed with executable permissions. |
| 70 | + |
| 71 | +## Usage |
| 72 | + |
| 73 | +### Update Configurations |
| 74 | + |
| 75 | +Edit files directly in this repository: |
| 76 | + |
| 77 | +```bash |
| 78 | +chezmoi edit ~/.bashrc # Edit bashrc |
| 79 | +chezmoi edit ~/.gitconfig # Edit gitconfig |
| 80 | +``` |
| 81 | + |
| 82 | +### Apply Changes |
| 83 | + |
| 84 | +After editing, apply changes to your home directory: |
| 85 | + |
| 86 | +```bash |
| 87 | +chezmoi apply |
| 88 | +``` |
| 89 | + |
| 90 | +### View What Changed |
| 91 | + |
| 92 | +Preview changes before applying: |
| 93 | + |
| 94 | +```bash |
| 95 | +chezmoi diff |
| 96 | +``` |
| 97 | + |
| 98 | +### Adding Updates to Chezmoi |
| 99 | + |
| 100 | +Alternatively, what I like to do is update the config files directly, then add the changes to chezmoi. |
| 101 | +For example, I update my neovim config directly, add the changes to chezmoi: |
| 102 | + |
| 103 | +```bash |
| 104 | +chezmoi add ~/.config/nvim |
| 105 | +``` |
| 106 | + |
| 107 | +and then commit the changes to my dotfiles repo. |
| 108 | + |
| 109 | +### Manage Multiple Machines |
| 110 | + |
| 111 | +chezmoi supports machine-specific configurations. Use templating for machine-specific settings: |
| 112 | + |
| 113 | +```bash |
| 114 | +chezmoi add --template ~/.bashrc |
| 115 | +``` |
| 116 | + |
| 117 | +## Features |
| 118 | + |
| 119 | +- **Git integration** - Full git configuration and global ignore rules |
| 120 | +- **Shell aliases** - Custom aliases for ls and grep with color |
| 121 | +- **Git prompt** - Bash prompt shows current git branch |
| 122 | +- **History search** - Arrow keys search through bash history |
| 123 | +- **Neovim setup** - NvChad configuration for a modern vim experience |
| 124 | +- **Environment management** - Load custom environment variables from `~/.env` |
| 125 | + |
| 126 | +## Contributing |
| 127 | + |
| 128 | +Personal dotfiles repository. For use across your machines. |
| 129 | + |
| 130 | +## License |
| 131 | + |
| 132 | +Personal use only. |
0 commit comments