Skip to main content
Marcus Knuth

Marcus Knuth

Information technology enthusiast since 1985

I’m Marcus — a developer building solo, one layer at a time. This blog documents the journey: from securing infrastructure to crafting a portable, terminal-driven workflow. More about me →

Recent

Dotfiles Without Secrets

·1324 words·7 mins
Up until now, there’s been an unspoken assumption behind every chezmoi init --apply: the age key is present. That means SSH keys get decrypted and placed, the git remote switches to SSH, and everything just works. On a trusted machine — your main workstation, your server — that’s exactly what you want.

Configuring tmux with TPM

·1483 words·7 mins
Third time’s the charm. tmux has been installed and waiting since the Ansible post, and after two detours through eza, fzf, and zsh plugins, it’s finally getting its configuration. No more excuses. The goal today: a .tmux.conf that feels right from the first keystroke, plus a plugin manager to handle session persistence — because losing your tmux layout to a reboot is the kind of pain you only tolerate once.

Making eza Your Default

In the previous post, I wrapped up the installation story. We now have four strategies for getting software onto a fresh machine. But installing tools is only half the job — they need configuring. And eza is the perfect place to start, because it’s a drop-in replacement for something I use hundreds of times a day: ls.

Installing GitHub Releases with Ansible

In the previous post, I fixed the onchange script so the Ansible playbook actually triggers when it should. At the end, I mentioned fzf as the next tool to install. Here’s why it needed a different approach. Three Installation Strategies So Far # Over the last few posts, we’ve built up three ways to install software through chezmoi:

When Onchange Doesn't

In the previous post, I extended the Ansible playbook to install eza from an external apt repository. Everything worked in the container. Time to run it on my actual WSL2 machine. chezmoi update Nothing happened. No Ansible output. No errors. The playbook didn’t run at all.