Skip to content

// 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

2026-10-176 min read
FirefoxLinuxprofile-sync-daemonfuse-overlayfsrecovery
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

2026-10-176 min read
Nixrootlesssandboxgarbage collectionTLS
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

2026-10-178 min read
NixCachyOSLinuxrootlesschroot
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

2026-10-176 min read
Linuxbashpkillpgrepdebugging
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

2026-10-096 min read
PostgreSQLsetuppg_hbaDockerLinux
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

2026-10-095 min read
PostgreSQLconnection-refusedDockerpg_hbaLinux
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

2026-10-095 min read
LinuxPATHcommand-not-foundbashifconfig
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

2026-10-084 min read
Nixnix-direnvdirenvLinux
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

2026-10-084 min read
LinuxdirenvNixdebugging
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

2026-10-084 min read
Nixdirenvnix-direnvuser-namespaceLinux
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

2026-10-083 min read
Nixfishdirenvrootless NixLinux
Read the note →