Skip to content

Commit 0c28004

Browse files
committed
Switch to pure yaml
Update awk
1 parent 75f845f commit 0c28004

File tree

13 files changed

+861
-677
lines changed

13 files changed

+861
-677
lines changed

README.md

Lines changed: 99 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,141 +1,136 @@
1-
# 🚀 Dotfiles
1+
# Dotfiles
22

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
4+
environment. It includes shell configuration (zsh), a Lua-based Neovim setup,
5+
and a small set of helper scripts to install prerequisites and symlink
6+
everything into place.
47

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
8+
---
129

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
10+
## What’s inside
1911

20-
## 📁 Repository Structure
12+
- **`home/`** — Files intended to live directly under `$HOME` (e.g., shell RCs).
13+
- **`config/`** — Files for `$HOME/.config` (e.g., `nvim/` for the Neovim config
14+
written in Lua).
15+
- **`scripts/`** — Helper/installer scripts used during setup.
16+
- **`install.sh`** — One-shot installer that orchestrates the setup.
17+
- Extras:
18+
- `guake.conf` (terminal), `vimium.json` (browser Vim keybinds),
19+
`resticprofile.toml`, `sanoid.conf` (backup/snapshots).
2120

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-
```
21+
> The repository is primarily **Lua** and **Shell**, reflecting the Neovim
22+
config plus installer scripts.
3423

35-
## 🚀 Quick Start
24+
---
3625

37-
### Full Installation
26+
## Quick start
3827

39-
Clone the repository and run the installation script:
28+
> **Requirements:** `git` and a POSIX-like environment (Linux/macOS). The
29+
installer will try to install anything else it needs (e.g., zsh, Neovim)
30+
depending on your system.
4031

4132
```bash
33+
# clone
4234
git clone https://github.com/erichlf/dotfiles.git ~/.dotfiles
4335
cd ~/.dotfiles
44-
./install.sh
45-
```
46-
47-
### Dotfiles Only
4836

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
37+
# run the installer
38+
./install.sh
5439
```
5540

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:
68-
69-
- `DOTFILES_DIR`: Path to the dotfiles repository
70-
- `SYSTEM`: System identifier (auto-detected, used for debugging)
41+
What the installer typically does:
7142

72-
## 🎯 LazyVim Configuration
43+
1. Detects your OS/distro.
44+
2. Installs or updates core tools (zsh, neovim, etc.) as needed.
45+
3. Creates symlinks from the repo to your `$HOME` and `$HOME/.config`.
46+
4. Optionally applies terminal/editor/browser extras.
7347

74-
The crown jewel of this repository is the highly customized LazyVim configuration located in `config/nvim/`.
48+
> Prefer to do things manually? See **Manual linking** below.
7549
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
87-
88-
## 🛠️ Customization
89-
90-
### Adding New Configurations
50+
---
9151

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
52+
## Manual linking (advanced)
9553

96-
### Modifying LazyVim
54+
If you’d rather link files yourself:
9755

98-
The most important customization files are in `config/nvim/lua/user/`. The naming convention is self-explanatory:
56+
1. Copy or symlink anything under `home/` into `$HOME`.
57+
2. Copy or symlink anything under `config/` into `$HOME/.config`.
58+
3. Launch a new shell to pick up zsh config; start `nvim` to let plugins finish bootstrapping.
9959

100-
- `keymaps.lua` - Custom keybindings
101-
- `options.lua` - Neovim options
102-
- `plugins/` - Additional plugin configurations
60+
> Tip: If you use GNU Stow, you can mirror `home/` and `config/` into place
61+
cleanly (not required by the repo, but convenient).
10362

104-
## 📋 Requirements
63+
---
10564

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+
## Updating
11066

111-
## 🔧 Troubleshooting
67+
```bash
68+
cd ~/.dotfiles
69+
git pull
70+
# re-run the installer if you want it to reconcile changes
71+
./install.sh
72+
```
11273

113-
### Common Issues
74+
---
11475

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
76+
## Uninstalling / reverting
11877

119-
### Getting Help
78+
There is no method right now to uninstall. However, you can remove symlinks you
79+
created and/or restore your previous dotfiles backup. If you used Stow,
80+
`stow -D <package>` will reverse those links. To remove packages it would be
81+
more of a manual operation by reading what pacakges were installed and then
82+
uninstalling them.
12083

121-
If you encounter issues:
84+
---
12285

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
86+
## Repository layout
12687

127-
## 🤝 Contributing
88+
```
89+
dotfiles/
90+
├─ home/ # items that should live directly in $HOME
91+
├─ config/ # items for $HOME/.config (e.g., nvim/)
92+
├─ scripts/ # installer and helper scripts
93+
├─ install.sh # main entry point for setup
94+
├─ guake.conf # terminal config (optional)
95+
├─ vimium.json # browser keybindings (optional)
96+
├─ resticprofile.toml# restic profiles (optional)
97+
├─ sanoid.conf # zfs-auto-snapshot profiles (optional)
98+
└─ private/ # local-only overrides (not tracked)
99+
```
128100

129-
Feel free to:
130-
- Report bugs or issues
131-
- Suggest improvements
132-
- Submit pull requests
133-
- Share your own configurations
101+
(See the repo root for the actual files and directories.)
134102

135-
## 📄 License
103+
---
136104

137-
This project is open source. Feel free to use, modify, and distribute as needed.
105+
## FAQ
106+
107+
**Q: Can I pick and choose?**
108+
Yes. Run `source scripts/utils.sh` and then run the commands you'd like to run.
109+
110+
**Q: macOS or Linux?**
111+
Both are supported; but currently `install.sh` focuses on android (termux),
112+
cachyos, and ubuntu.
113+
114+
**Q: What keys are supported in the yaml files?**
115+
116+
- apt-get, apt: uses apt-get to install packages
117+
- pacstall: uses pacstall to install packages, should have extras:
118+
install_chaotic prior
119+
- pac: uses pacman to install packages
120+
- yay: uses yay to install packages, should have extras: install_yay prior
121+
- pkg: uses termux pkg to install packages
122+
- base-ubuntu: uses apt-get to install packages as a first step
123+
- base-arch: uses pacman to install packages as a first step
124+
- base-phone: uses termux pkg to install packages as a first step
125+
- extras: run aliases that are in the environment (sourced from utils.sh) by name
126+
- final-ubuntu: uses apt-get to install packages as a final step
127+
- final-arch: uses pacman to install packages as a final step
128+
- final-phone: uses termux pkg to install packages as a final step
129+
- final-extras: runs aliases that are in the environment
130+
(sourced from utils.sh) by name as a final step
138131

139132
---
140133

141-
**Note**: The `private/` directory is intentionally not tracked in git and contains personal configurations that shouldn't be shared publicly.
134+
## License
135+
136+
Open source—see the LICENSE file in the repo.

install.sh

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,43 @@
22

33
set -e
44

5+
DOTFILES_DIR=$(pwd)
6+
source "$DOTFILES_DIR/scripts/base_install.sh"
7+
58
# get the kernel string
69
kernel=$(uname -r)
710
case "$kernel" in
8-
*"android"* )
9-
./scripts/phone.sh
10-
;;
11-
*"azure"* ) # github action
12-
export CI=true
13-
if [[ $DEV_WORKSPACE != "" ]]; then
14-
./scripts/devcontainer.sh
15-
else
16-
./scripts/main.sh
17-
fi
18-
;;
19-
*"generic"* )
20-
if [[ $DEV_WORKSPACE != "" ]]; then
21-
./scripts/devcontainer.sh
22-
else
23-
./scripts/main.sh
24-
fi
25-
;;
26-
*"cachyos"* )
27-
./scripts/nas.sh
28-
;;
29-
*)
30-
if [[ $(uname -o) == "Darwin" ]]; then
31-
./scripts/mac.sh
32-
elif [[ $DEV_WORKSPACE != "" ]]; then
33-
./scripts/devcontainer.sh
34-
else
35-
echo \
36-
"
11+
*"android"*)
12+
base_install "phone"
13+
;;
14+
*"azure"*) # github action
15+
export CI=true
16+
if [[ $DEV_WORKSPACE != "" ]]; then
17+
base_install "devcontainer"
18+
else
19+
base_install "ubuntu"
20+
fi
21+
;;
22+
*"generic"*)
23+
if [[ $DEV_WORKSPACE != "" ]]; then
24+
base_install "devcontainer"
25+
else
26+
base_install "ubuntu"
27+
fi
28+
;;
29+
*"cachyos"*)
30+
base_install "nas"
31+
;;
32+
*)
33+
if [[ $DEV_WORKSPACE != "" ]]; then
34+
base_install "devcontainer"
35+
else
36+
echo \
37+
"
3738
Unknown system: $(uname -a)
3839
KTHNXBYE
3940
"
40-
exit 1
41-
fi
42-
;;
41+
exit 1
42+
fi
43+
;;
4344
esac
44-

0 commit comments

Comments
 (0)