// notes
Engineering notes
Incident write-ups and fixes from real projects: symptom, investigation, root cause, solution
Firefox profile lost after profile-sync-daemon resync
After a Firefox restart the extensions vanished while bookmarks came back. How psd moved the profile into an empty fuse-overlayfs mount and how to restore it
Read the note →Nix rootless: build won't start and store hash under GC
Local builds fail with unable to start build process, and a hardcoded nss-cacert path sits on the GC dead list. Two fixes: sandbox and path discovery
Read the note →Nix on CachyOS: install impossible — run it rootless
Nix will not install when the root is read-only, sudo is broken and /nix is baked into ELF. Three limits and a rootless run with mount namespace and chroot
Read the note →pkill -f kills itself: the pattern matches the command line
pkill -f and pgrep -f match the pattern against the whole command line, including the bash -c wrapper. Why the command kills itself and which filters help
Read the note →PostgreSQL installation and setup
Install PostgreSQL with apt or Docker: cluster, initdb, pg_hba, roles and load-ready settings. Step-by-step commands with a check after every change
Read the note →PostgreSQL: connection refused — causes and fix
Connection refused and no pg_hba.conf entry look alike but live on different layers. I diagnose the causes and fix PostgreSQL locally or in Docker
Read the note →Linux: “command not found” — PATH, ifconfig, pip
command not found on Linux: how to trace a binary through PATH, why sudo and login shells see a different path, and what replaces ifconfig and pip
Read the note →nix-direnv: "minimum required bash version is 4.4"
nix-direnv fails with "minimum required bash version is 4.4" even though bash is newer. I break down the hard-coded /nix/store paths, the cause, and the fix
Read the note →Who calls unshare: intercepting a binary through PATH
A command fails without naming the culprit. Here is the trick: replace the binary with a logging script via PATH and find the caller without tracing or root
Read the note →nix-direnv: "unshare failed: Operation not permitted"
direnv with use flake fails on unshare failed while dotenv works. I trace the cause (a nested user namespace) and show the fix for the nix wrapper
Read the note →Nix devShell in fish: PATH is silently ignored
devShell packages are not picked up in fish because PATH points inside the mount namespace. How to diagnose the silent fallback and re-exec the shell
Read the note →