Platform Notes - uhop/dotfiles GitHub Wiki
Per-OS post-install details (fonts, video codecs, clipboard tools, and a Mac's sleep and FileVault settings for remote access). For bootstrap-time support tiers, per-distro quirks, and troubleshooting the initial install, see Distro Compatibility.
Fonts on Linux (Ubuntu): see https://askubuntu.com/questions/3697/how-do-i-install-fonts
- Download font, e.g., Hack Nerd Font and/or FiraCode Nerd Font from https://www.nerdfonts.com/font-downloads
- Unzip its archive to
~/.local/share/fonts/. - Run:
fc-cache -fv
FiraCode Nerd Font is used for code (Visual Studio Code). It supports common programming ligatures.
Hack Nerd Font is used as a monospaced font for terminals (e.g., gnome-terminal) and similar programs (git-gui, gitk, โฆ).
These dotfiles assume that these fonts are preinstalled and use them as appropriate.
Restricted soft on Ubuntu to play videos:
sudo apt install ubuntu-restricted-extras vlc libdvd-pkgsudo dpkg-reconfigure libdvd-pkgMore on videos: https://www.omgubuntu.co.uk/2022/08/watch-bluray-discs-in-vlc-on-ubuntu-with-makemkv
To support cut-and-paste in the micro editor:
- Use the default (
"external") for the clipboard option. - Install a proper command-line clipboard tool:
- For Wayland:
sudo apt install wl-clipboard
- For X11 (realistically only one could be installed):
sudo apt install xclip xsel
- You may install all of them for a good measure:
sudo apt install wl-clipboard xclip xsel
- For Wayland:
F10 doesn't work in a terminal: https://superuser.com/questions/1543538/f10-key-not-working-in-terminal-mc-ubuntu-19-10
See: https://support.google.com/titansecuritykey/answer/9148044?hl=en
A key should be registered only once. When I attempted to do so, I was misleadingly informed that "this device cannot be used to create passkeys". When it happened, press "Use other device", which will switch from the current computer to the key and now everything will go smoothly.
See the following articles:
- https://ubuntu.com/tutorials/how-to-install-a-windows-11-vm-using-lxd#1-overview
- https://discussion.scottibyte.com/t/windows-11-lxd-virtual-machine-updated-november-2023/88
Useful commands:
- Start the
win11instance:lxc start win11
- Start and connect:
lxc start win11 --console=vga
- Start and connect:
- Connect to the running instance:
lxc console win11 --type=vga
If RDP is enabled in Windows, you can use Remmina to connect. Usually it is a faster option.
OTOH, connecting console allows to see the boot process and updates before Windows is loaded.
- Docker: https://docs.docker.com/engine/install/ubuntu/
-
lazydocker: https://github.com/jesseduffield/lazydocker -
dive: https://github.com/wagoodman/dive
Periodically Docker system needs to be cleaned up. Use:
docker system prune -aThis will remove all unused containers, networks, images, and build cache.
To remove all and volumes not used by currently running containers:
docker system prune -a --volumesTo remove everything (see above) without asking confirmation use "force":
docker system prune -af --volumesTime to time AppArmor interferes with Docker operations, which result in failures with
"permission denied" errors. Frequently it can be helped with:
sudo aa-remove-unknownEnabling Fn keys:
- https://help.ubuntu.com/community/AppleKeyboard
- https://askubuntu.com/questions/33514/use-function-keys-without-pressing-the-fn-button-in-the-mac-keyboard
Video driver:
-
https://askubuntu.com/questions/1295423/ubuntu-20-04-on-imac-mid-2011-cant-adjust-brightness
- This answer worked for my MacBook Air: https://askubuntu.com/a/1478635
Supported since the osFamily/pkgManager refactor. The install-packages script uses dnf and enables EPEL (on non-Fedora distros) automatically.
-
microis not in default repos โ installed via brew instead. -
doas/opendoasis not packaged โ passwordless sudo for maintenance commands is granted via/etc/sudoers.d/chezmoi(the%wheelgroup), written byrun_onchange_after_install-sudoers.sh.tmpl. See Application Notes for details. -
snapis not pre-installed โ the update script checks at runtime. - Fonts: same as Ubuntu (download Nerd Fonts to
~/.local/share/fonts/, runfc-cache -fv).
A privileged user installs system packages and brew first. Then any user can run chezmoi init --apply to get their personal shell environment (aliases, functions, completions, local scripts). The install-packages script detects when brew is read-only and skips brew bundle.
A Mac with system sleep on answers ssh, playbash, and other network services only during its short maintenance wakes, so connections from other machines time out at random. "Wake for network access" does not help without a Bonjour Sleep Proxy (an Apple TV) on the LAN: a new connection does not wake the Mac.
Measured on a desktop Mac on Ethernet in October 2026: with sleep 1 it slept about 23 hours a day, waking for under a minute every 15 minutes or so. Four 60-second ssh attempts from another machine while it slept all timed out, and none of them woke it.
Check the setting (sleep is minutes of idle time before the system sleeps; 0 means never):
pmset -gTurn system sleep off (display sleep is not affected):
sudo pmset -a sleep 0This is a manual step: the dotfiles don't change power settings. Run the command once on every Mac that other machines connect to, and again after you reinstall macOS on it. It's listed under Setting up a new machine ยง Manual steps.
To restore it, run sudo pmset -a sleep 1. The cost is a few watts on average: Apple's environmental reports put a small desktop Mac at about 0.5 W asleep and 4 W idle, so roughly 30 kWh a year.
To see when a Mac slept and what woke it:
pmset -g log | grep -E 'Entering Sleep|DarkWake|Wake from'A related symptom on the client: with ControlMaster auto in ~/.ssh/config, a shared connection to a Mac that has gone to sleep dies, and the next ssh prints muxclient: master hello exchange failed before it opens a new connection.
With FileVault on, a restarted Mac answers nothing over the network until someone unlocks its disk, and macOS updates restart it. The ssh unlock below is the option for a restart nobody is there for.
On Apple silicon with macOS 26 or later and Remote Login on, you can unlock it from another machine with your macOS account password (box stands for the Mac's host name):
ssh boxUntil the unlock, /etc/ssh and ~/.ssh sit on the locked data volume, so the server accepts only a password: keys don't work, and PasswordAuthentication no doesn't apply. After the password, the connection closes while macOS mounts the data volume and starts its services; then ssh works as usual, with keys. playbash and anything else that runs ssh with BatchMode=yes can't unlock. For more information, see man apple_ssh_and_filevault.
Not yet tried in practice (October 2026). The host key that the server shows before the unlock is unverified. A third-party unlock tool, fv-ssh-unlock, checks it against the booted Mac's key, which suggests they're the same. If ssh reports a changed host key at this step, compare it with the fingerprint recorded on the booted Mac before you type the password:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubFor a restart you start yourself, sudo fdesetup authrestart restarts and skips the unlock once. Until then, the unlock key stays in memory, which weakens FileVault's protection (see man fdesetup).
I use apt, snap, flatpak, brew and AppImageLauncher. Most GUI apps are installed with flatpak.
They are installed manually using Win-A (Cmd-A) from Gnome.
-
flatpak-
flatsealโflatpakpermission editor. -
calibreโ an e-book manager. -
gear leverโ an AppImage manager. -
telegramโ a social network. - Web browsers (used for testing):
- Brave
- Chromium
- Google Chrome
- Microsoft Edge
- Communications:
- Slack
- Zoom
-
steamโ the game launcher from Valve. -
weztermโ a modern terminal.
-
-
snap-
codeโ Visual Studio Code. -
firefoxโ a web browser (it comes preinstalled). -
postmanโ a tool for debugging network services.- It is available as a flatpak, but apparently it is completely unusable.
-
skypeโ communications- It is available as a flatpak, but apparently it is completely unusable.
-
Note: if
snap-storecannot be updated (because it is running) use:snap-store --quit && snap refresh snap-store
-
- AppImages
-
gear leveris used viaflatpak. See above. -
AppImageLaunchercan be used. It is installed using the official.debfile or the PPA: https://github.com/TheAssassin/AppImageLauncher/wiki/Install-on-Ubuntu-or-Debian
-