dotfiles
Notes on dotfiles in general and tweaks specific to [[Omarchy]]; my dotfiles repository is: https://github.com/dubinsky/dotfiles.
Table of Contents
Motivation
Around year 2000, I heard, saw, and - I vaguely recall - used myself a bare repository approach to store my configuration files. Since I change my desktop computer only every 6-7 years on the average, it did not make sense to formalize it.
Now that I use [[Omarchy]] on both my [[Framework Laptop 13]] and [[Desktop 2024]], maybe it is time to try again ;)
Approach
The options I see are:
- GNU stow: although recommended in the Omarchy Manual, its symlink-based approach does not appeal to me;
- bare GIT repository: there are many guides, but I'd like something that helps with creating and maintaining the dotfiles repository;
- yadm seems to be a thin enough wrapper around a GIT repository which does help with routine tasks;
- chezmoi gets a lot of praise for better
templating than
yadm, but since I don't even understand what templating is, let alone need it, I am going to go withyadmfor now :)
yadm arranges for the home directory to be the work tree of the dotfiles repository
stored in .local/share/yadm/repo.git.
| What | Where |
|---|---|
| Git directory | ~/.local/share/yadm/repo.git |
| Work tree | $HOME (/home/dub) |
Remote origin |
git@github.com:dubinsky/dotfiles.git |
| Branch | master |
| Bootstrap | ~/.config/yadm/bootstrap (runs bootstrap.d/*) |
There is no ~/.git. $HOME is not a Git repository.
Only a small explicit set is tracked (~60–70 files: shell, Hypr/Omarchy, yadm bootstrap, a few .grok/skills, rclone helpers) — not the whole home directory.
status.showUntrackedFiles = no, so yadm status hides untracked files; yadm ls-files shows what is actually in the repo.
Installation
To install yadm on Omarchy:
$ sudo pacman -S yadm
$ yadm init
$ yadm remote add origin "git@github.com:dubinsky/dotfiles.git"
$ yadm add <file>
$ yadm commit -m "<message>"
$ yadm push
Bootstrap
After checkout, yadm runs .config/yadm/bootstrap executable; it can also be run explicitly with
$ yadm bootstrap
I use a script copied from the yadm manual which runs all the executables in
.config/yadm/bootstrap.d/.
AUR packages that bootstrap.d installs:
zotero-bin— official Zotero Linux tarball. Do not use AURzotero; it compiles from git/npm.devpod-community-bin,google-cloud-cli,oscar,jetbrains-toolbox,chirp-next,sdrpp-git,sdrsharp
FreeCAD is official freecad plus python-shapely. IfcOpenShell is not
installed.
Readme
There are ways to add
README to the yadm repository without polluting the home directory: use sparse
checkout or put README under .github.
My README is the note you are reading ;)
Secrets
Traveling secrets (HA/UniFi API tokens, and the like) go through yadm encrypt, not plaintext in
the repo.
| What | Where |
|---|---|
| Patterns | ~/.config/yadm/encrypt |
| Ciphertext | ~/.local/share/yadm/archive (tracked) |
| Recipient | [[Yubikey: 2-factor authentication (U2F, OATH and OTP) and SSH]] OpenPGP
049DC4EF6FB97468 (yadm.gpg-recipient) |
| Public key | ~/.config/yadm/yubikey-openpgp.asc |
Private material is only on the 5C (serial 18600387). Decrypt needs the card, User
PIN, and a touch (uif decrypt=on). Encrypt uses the public key (no tap).
After changing a secret:
$ yadm encrypt && yadm add ~/.local/share/yadm/archive && yadm commit
On a new machine: import the .asc (bootstrap does this), then yadm decrypt.
Do not yadm add the matched plaintext files.
.zotero/**/prefs.js is in the repo exclude — API keys leaked there once.
Other approaches I considered and did not use:
yadm supports transcrypt and git-crypt directly.
Clone
On the new machine, run:
$ yadm clone --bootstrap https://github.com/dubinsky/dotfiles.git
yadm does not change pre-existing files; they can be overwritten with
$ yadm checkout <file>
Manual Tweaks
IntelliJ IDEA
Enable native Wayland support: in Help | Edit custom VM options add
-Dawt.toolkit.name=WLToolkit
(see JetBrains support ticket)
- to increase font size of both the user interface that the editor, set:
Settings | Editor | Font | Sizeto 22Settings | Appearance & Behavior | Appearance | Use custom fontandSizeto 22Setting | Tools | Terminal | Font Settings | Sizeto 22
Obsidian
- open the vault in
Podval/dub.podval.org - change Omarchy theme (this makes Omarchy theme available in Obsidian)
- set theme to
Omarchyso that Obsidian follows Omarchy theme changes - enable community plugins
- to increase font size of both the user interface that the editor, set:
Settings | Appearance | Advanced | Zoom levelto 150% andSettings | Appearance | Font sizeto 16
- CLI /
user-flags.conf: Omarchy ships~/.config/obsidian/user-flags.confwith-disable-gpu(single dash). Arch's/usr/bin/obsidianappends those flags afterapp.asar, and Obsidian CLI (1.12+) treats single-dash tokens as commands (Command "-disable-gpu" not found) while stripping unknown--switches. Keep--disable-gpu(double dash). Afteromarchy update, or afteromarchy refresh config obsidian/user-flags.conf, check that the file was not restored from/usr/share/omarchy/config/obsidian/user-flags.conf.
Zotero
- bootstrap installs AUR
zotero-bin(official binaries), not sourcezotero - install ZotMoove plugin
- install Better BibTex plugin
Chromium
- TODO what theme should I use to be able to change font size?