<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>nix on Erwin&#39;s stuff</title>
    <link>https://dekeijzer.xyz/tags/nix/</link>
    <description>Recent content in nix on Erwin&#39;s stuff</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Wed, 04 Nov 2026 19:14:13 +0100</lastBuildDate><atom:link href="https://dekeijzer.xyz/tags/nix/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Yak Shavers Yearly 5</title>
      <link>https://dekeijzer.xyz/posts/yak-shavers-yearly-5/</link>
      <pubDate>Wed, 04 Nov 2026 19:14:13 +0100</pubDate>
      
      <guid>https://dekeijzer.xyz/posts/yak-shavers-yearly-5/</guid>
      <description>tl;dr With home manager it really becomes easy to make a deterministic, version controlled tooling setup.
home manager Recently I switched jobs, this also meant switching laptops. In the past, I would probably have to spend at least a few hours, maybe a few days, for getting my terminal setup just like I want to.
But I also switched to home manager:
Home Manager is a Nix-powered tool for reproducible management of the contents of users’ home directories.</description>
      <content>&lt;h1 id=&#34;tldr&#34;&gt;tl;dr&lt;/h1&gt;
&lt;p&gt;With &lt;a href=&#34;https://nix-community.github.io/home-manager/&#34;&gt;home manager&lt;/a&gt; it really becomes easy to make a deterministic, version controlled tooling setup.&lt;/p&gt;
&lt;h1 id=&#34;home-manager&#34;&gt;home manager&lt;/h1&gt;
&lt;p&gt;Recently I switched jobs, this also meant switching laptops. In the past, I would probably have to spend at least a few hours, maybe a few days, for getting my terminal setup just like I want to.&lt;br&gt;
But I also switched to home manager:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Home Manager is a Nix-powered tool for reproducible management of the contents of users’ home directories. This includes programs, configuration files, environment variables and, well… arbitrary files.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Which meant that I only had to get my home manager config, install nix and after a &lt;code&gt;home-manager switch&lt;/code&gt; everything felt right at home.&lt;/p&gt;
&lt;p&gt;So instead of having to remember which packages I have installed with homebrew, I have a section in config like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;home&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;packages &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;age
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;argocd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;aria2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atuin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bun
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;cmake
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;codex
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;cilium-cli
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;gitui
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ghq
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;go
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;jq
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;jjui
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;jujutsu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;k3d
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;k9s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kind
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kustomize
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kubectl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kubelogin-oidc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kubectx
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lsd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lz4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;zoxide
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt; (pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lib&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;optional (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;isDarwin) pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;esphome)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Which manages all CLI programs I like to have available. Installing or removing a package is just as simple as editing a line in that file and doing a &lt;code&gt;home-manager switch&lt;/code&gt;. And because of nix flakes it is deterministic as well. If I update my sources using &lt;code&gt;nix flake update --flake .&lt;/code&gt; and some packages break, I can just do a git revert and everything works again. (too bad that I actually need this sometimes, because on macos the packages do seem to break occasionally)&lt;/p&gt;
&lt;h1 id=&#34;neovim&#34;&gt;neovim&lt;/h1&gt;
&lt;p&gt;And it&amp;rsquo;s not just useful for managing installed packages, it can also configure them for you. My complete nvim setup is managed with home-manager, which is ALSO deterministic. I no longer run into updated plugins that break, everything is pinned and I&amp;rsquo;m very happy.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  imports &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;./core.nix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;./colorscheme.nix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;./plugins.nix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;./treesitter.nix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  programs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;neovim &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    enable &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    defaultEditor &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    viAlias &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vimAlias &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vimdiffAlias &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;plugins &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;with&lt;/span&gt; pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vimPlugins; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      presence-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lsp_signature-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      auto-save-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      neo-tree-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      nui-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      plenary-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      nvim-web-devicons
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      bufferline-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      which-key-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      toggleterm-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      telescope-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dashboard-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      snacks-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      mason-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      mason-lspconfig-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      nvim-lspconfig
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      schema-companion-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      hop-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      vim-repeat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      tiny-glimmer-nvim
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ];
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(obviously this is not everything, but you get the gist)&lt;/p&gt;
&lt;p&gt;So when I opened vim on my fresh laptop, I was greeted with this nice splash screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://dekeijzer.xyz/ervim.png&#34; alt=&#34;ervim&#34;&gt;&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
