|
1 | | -# 🚀 Dotfiles |
| 1 | +# Dotfiles |
2 | 2 |
|
3 | | -A comprehensive collection of configuration files for a modern development environment, featuring a highly customized LazyVim setup, zsh configuration, and automated installation scripts. |
| 3 | +A curated set of dotfiles and scripts to bootstrap a comfortable, modern dev environment. It includes shell configuration (zsh), a Lua-based Neovim setup, and a small set of helper scripts to install prerequisites and symlink everything into place. |
4 | 4 |
|
5 | | -## ✨ What's Included |
6 | | - |
7 | | -### Core Configurations |
8 | | -- **Neovim**: Heavily customized LazyVim configuration with enhanced keybindings and additional plugins |
9 | | -- **Zsh**: Modern shell setup using zgenom and oh-my-zsh |
10 | | -- **Git**: Optimized git configuration and aliases |
11 | | -- **Terminal**: Various terminal emulator configurations |
| 5 | +--- |
12 | 6 |
|
13 | | -### Key Features |
14 | | -- 📦 **Automated Installation**: One-command setup for new systems |
15 | | -- 🔗 **GNU Stow Integration**: Clean symlink management |
16 | | -- 🎯 **LazyVim Enhancement**: Custom keybindings and plugin configurations |
17 | | -- 🔧 **DevContainer Support**: Includes `nvim-devcontainer-cli` plugin |
18 | | -- 🌟 **Cross-Platform**: Support for multiple operating systems |
| 7 | +## What’s inside |
19 | 8 |
|
20 | | -## 📁 Repository Structure |
| 9 | +- **`home/`** — Files intended to live directly under `$HOME` (e.g., shell RCs). |
| 10 | +- **`config/`** — Files for `$HOME/.config` (e.g., `nvim/` for the Neovim config written in Lua). |
| 11 | +- **`scripts/`** — Helper/installer scripts used during setup. |
| 12 | +- **`install.sh`** — One-shot installer that orchestrates the setup. |
| 13 | +- Extras: |
| 14 | + - `guake.conf` (terminal), `vimium.json` (browser Vim keybinds), `resticprofile.toml`, `sanoid.conf` (backup/snapshots). |
21 | 15 |
|
22 | | -``` |
23 | | -dotfiles/ |
24 | | -├── home/ # Files that go directly in $HOME |
25 | | -├── config/ # Files that go in $HOME/.config |
26 | | -│ └── nvim/ # LazyVim configuration |
27 | | -│ └── lua/user/ # Custom user configurations |
28 | | -├── scripts/ # Installation and utility scripts |
29 | | -│ ├── main.sh # Interactive installation menu |
30 | | -│ └── utils.sh # Shared functions and utilities |
31 | | -├── private/ # Private configurations (not tracked) |
32 | | -└── install.sh # Main installation script |
33 | | -``` |
| 16 | +> The repository is primarily **Lua** and **Shell**, reflecting the Neovim config plus installer scripts. |
34 | 17 |
|
35 | | -## 🚀 Quick Start |
| 18 | +--- |
36 | 19 |
|
37 | | -### Full Installation |
| 20 | +## Quick start |
38 | 21 |
|
39 | | -Clone the repository and run the installation script: |
| 22 | +> **Requirements:** `git` and a POSIX-like environment (Linux/macOS). The installer will try to install anything else it needs (e.g., zsh, Neovim) depending on your system. |
40 | 23 |
|
41 | 24 | ```bash |
| 25 | +# clone |
42 | 26 | git clone https://github.com/erichlf/dotfiles.git ~/.dotfiles |
43 | 27 | cd ~/.dotfiles |
44 | | -./install.sh |
45 | | -``` |
46 | 28 |
|
47 | | -### Dotfiles Only |
48 | | - |
49 | | -If you only want to install the configuration files without additional software: |
50 | | - |
51 | | -```bash |
52 | | -./scripts/main.sh |
53 | | -# Select "Create symbolic links" from the menu |
| 29 | +# run the installer |
| 30 | +./install.sh |
54 | 31 | ``` |
55 | 32 |
|
56 | | -## ⚙️ Installation Process |
57 | | - |
58 | | -The installation system automatically: |
59 | | - |
60 | | -1. **Detects your operating system** and selects appropriate installation scripts |
61 | | -2. **Installs required dependencies** based on your system |
62 | | -3. **Creates symbolic links** using GNU Stow for clean file management |
63 | | -4. **Configures shell environment** with zsh and custom themes |
64 | | - |
65 | | -### Environment Variables |
66 | | - |
67 | | -The installation scripts use these environment variables: |
| 33 | +What the installer typically does: |
68 | 34 |
|
69 | | -- `DOTFILES_DIR`: Path to the dotfiles repository |
70 | | -- `SYSTEM`: System identifier (auto-detected, used for debugging) |
| 35 | +1. Detects your OS/distro. |
| 36 | +2. Installs or updates core tools (zsh, neovim, etc.) as needed. |
| 37 | +3. Creates symlinks from the repo to your `$HOME` and `$HOME/.config`. |
| 38 | +4. Optionally applies terminal/editor/browser extras. |
71 | 39 |
|
72 | | -## 🎯 LazyVim Configuration |
| 40 | +> Prefer to do things manually? See **Manual linking** below. |
73 | 41 |
|
74 | | -The crown jewel of this repository is the highly customized LazyVim configuration located in `config/nvim/`. |
75 | | - |
76 | | -### Key Improvements |
77 | | -- **Enhanced Keybindings**: More intuitive and efficient key mappings |
78 | | -- **Additional Plugins**: Including `nvim-devcontainer-cli` for container development |
79 | | -- **Custom User Configurations**: Located in `config/nvim/lua/user/` |
80 | | -- **Modular Structure**: Easy to understand and modify |
81 | | - |
82 | | -### Notable Plugins |
83 | | -- DevContainer CLI integration |
84 | | -- Enhanced file navigation |
85 | | -- Improved LSP configurations |
86 | | -- Custom statusline and themes |
| 42 | +--- |
87 | 43 |
|
88 | | -## 🛠️ Customization |
| 44 | +## Manual linking (advanced) |
89 | 45 |
|
90 | | -### Adding New Configurations |
| 46 | +If you’d rather link files yourself: |
91 | 47 |
|
92 | | -1. **For $HOME files**: Add to `home/` directory |
93 | | -2. **For $HOME/.config files**: Add to `config/` directory |
94 | | -3. **Run stow**: `stow home config` to create symlinks |
| 48 | +1. Copy or symlink anything under `home/` into `$HOME`. |
| 49 | +2. Copy or symlink anything under `config/` into `$HOME/.config`. |
| 50 | +3. Launch a new shell to pick up zsh config; start `nvim` to let plugins finish bootstrapping. |
95 | 51 |
|
96 | | -### Modifying LazyVim |
| 52 | +> Tip: If you use GNU Stow, you can mirror `home/` and `config/` into place cleanly (not required by the repo, but convenient). |
97 | 53 |
|
98 | | -The most important customization files are in `config/nvim/lua/user/`. The naming convention is self-explanatory: |
| 54 | +--- |
99 | 55 |
|
100 | | -- `keymaps.lua` - Custom keybindings |
101 | | -- `options.lua` - Neovim options |
102 | | -- `plugins/` - Additional plugin configurations |
| 56 | +## Updating |
103 | 57 |
|
104 | | -## 📋 Requirements |
| 58 | +```bash |
| 59 | +cd ~/.dotfiles |
| 60 | +git pull |
| 61 | +# re-run the installer if you want it to reconcile changes |
| 62 | +./install.sh |
| 63 | +``` |
105 | 64 |
|
106 | | -- **Git**: For cloning the repository |
107 | | -- **GNU Stow**: For symlink management |
108 | | -- **Zsh**: Modern shell (auto-installed if not present) |
109 | | -- **Neovim**: Recent version for LazyVim compatibility |
| 65 | +--- |
110 | 66 |
|
111 | | -## 🔧 Troubleshooting |
| 67 | +## Uninstalling / reverting |
112 | 68 |
|
113 | | -### Common Issues |
| 69 | +Remove symlinks you created and/or restore your previous dotfiles backup. If you used Stow, `stow -D <package>` will reverse those links. If you used the one-shot installer, re-run it to switch features off, or remove the linked files in `$HOME`/`$HOME/.config` that point into `~/.dotfiles`. |
114 | 70 |
|
115 | | -1. **Stow conflicts**: Remove existing dotfiles before running installation |
116 | | -2. **Missing dependencies**: Run `./scripts/main.sh` and select dependency installation |
117 | | -3. **Permission issues**: Ensure you have write access to your home directory |
| 71 | +--- |
118 | 72 |
|
119 | | -### Getting Help |
| 73 | +## Repository layout |
120 | 74 |
|
121 | | -If you encounter issues: |
| 75 | +``` |
| 76 | +dotfiles/ |
| 77 | +├─ home/ # items that should live directly in $HOME |
| 78 | +├─ config/ # items for $HOME/.config (e.g., nvim/) |
| 79 | +├─ scripts/ # installer and helper scripts |
| 80 | +├─ install.sh # main entry point for setup |
| 81 | +├─ guake.conf # terminal config (optional) |
| 82 | +├─ vimium.json # browser keybindings (optional) |
| 83 | +├─ resticprofile.toml# restic profiles (optional) |
| 84 | +├─ sanoid.conf # zfs-auto-snapshot profiles (optional) |
| 85 | +└─ private/ # local-only overrides (not tracked) |
| 86 | +``` |
122 | 87 |
|
123 | | -1. Check the `scripts/utils.sh` for debugging functions |
124 | | -2. Run with `SYSTEM` variable set for additional debugging output |
125 | | -3. Open an issue on GitHub with your system information |
| 88 | +(See the repo root for the actual files and directories.) |
126 | 89 |
|
127 | | -## 🤝 Contributing |
| 90 | +--- |
128 | 91 |
|
129 | | -Feel free to: |
130 | | -- Report bugs or issues |
131 | | -- Suggest improvements |
132 | | -- Submit pull requests |
133 | | -- Share your own configurations |
| 92 | +## FAQ |
134 | 93 |
|
135 | | -## 📄 License |
| 94 | +**Q: Can I pick and choose?** |
| 95 | +Yes. Run `source scripts/utils.sh` and then run the commands you'd like to run. |
136 | 96 |
|
137 | | -This project is open source. Feel free to use, modify, and distribute as needed. |
| 97 | +**Q: macOS or Linux?** |
| 98 | +Both are supported; but currently `install.sh` focuses on android (termux), cachyos, and ubuntu. |
138 | 99 |
|
139 | 100 | --- |
140 | 101 |
|
141 | | -**Note**: The `private/` directory is intentionally not tracked in git and contains personal configurations that shouldn't be shared publicly. |
| 102 | +## License |
| 103 | + |
| 104 | +Open source—see the LICENSE file in the repo. |
0 commit comments