omarchy-config/README.md
2026-07-17 20:25:09 +02:00

85 lines
2.5 KiB
Markdown

# Milan's Omarchy Config
This repository is the source of truth for Milan's Omarchy workstation.
Configs are restored with symlinks so future edits should happen here.
## Fresh install
```bash
git clone https://git.ta52.dk/milan/omarchy-config.git
cd omarchy-config
./bootstrap.sh
```
## Restore on an existing install
```bash
./install.sh
```
## Installation options
The installer respects environment variables to customize behavior:
- `UPDATE_SYSTEM=1` - Update the system packages before installing (skipped by default on fresh Omarchy installs)
- `ENABLE_SYSTEM_SERVICES=1` - Enable system-level services (user services are enabled by default)
- `INSTALL_SMB=1` - Run the optional SMB automount installer
Example:
```bash
UPDATE_SYSTEM=1 ENABLE_SYSTEM_SERVICES=1 ./install.sh
```
## Installer behavior
The installer is designed to be:
- **Idempotent** - Safe to run multiple times
- **Robust** - Continues after non-critical failures and reports them at the end
- **Fast** - Does not update the system by default
- **Deterministic** - Same results on each run
- **Minimal** - Requires minimal user interaction
All configs are backed up before being replaced. Backups are stored in `~/.local/state/omarchy-config/backups/`.
## Configuration symlinking
Entire config directories are symlinked from this repository into `~/.config`. This means:
- **Pro**: Configs are centrally managed and changes propagate immediately
- **Con**: New files added to managed directories in `~/.config` will not automatically appear in git
- Future Omarchy config additions inside symlinked directories must be committed manually from this repo
- This is an intentional trade-off for centralized management
## Fonts
Fonts from the `fonts/` directory are symlinked to `~/.local/share/fonts/omarchy-config` and the system font cache is updated automatically.
## Update repository
After changing your setup:
```bash
./backup.sh
git add .
git commit -m "Update"
git push
```
## Structure
- `tracked-configs.txt` lists every managed config symlink
- `configs/` stores files that restore into `~/.config`
- `bash/` stores `.bashrc` and `.bash_aliases` when enabled in `tracked-configs.txt`
- `scripts/` restores executable helpers into `~/.local/bin`
- `applications/` restores custom launchers into `~/.local/share/applications`
- `fonts/` symlinks into `~/.local/share/fonts/omarchy-config`
- `system/` stores exported service and system package metadata
- `smb/` stores SMB automount templates without credentials