TIL: How to Append to a Config Option String in Nix

Recently on my laptop I had to add some extra config settings to my Hyprland config. Rather than polluting my hyprland.nix file with if, else depending on the host. I wanted to add the extra config in the home.nix of the host. So it’s contained within that host. Where my home.nix is the entry point for my home-manager config for that host.

My hyprland.nix looks like this:

{
wayland.windowManager.hyprland = {
  enable = true;
  extraConfig = ''
     input {
        kb_layout = gb
        touchpad {
            disable_while_typing=false
        }
     }
  '';
};
}

I want to add some extra config to the extraConfig option/attribute of this attribute set. Then in my home.nix I added the following:

{
wayland.windowManager.hyprland.extraConfig = lib.mkAfter ''
  exec-once = /usr/libexec/geoclue-2.0/demos/agent
  exec-once = warp-taskbar

  bind=,XF86Launch5,exec,/usr/local/bin/swaylock -S
  bind=,XF86Launch4,exec,/usr/local/bin/swaylock -S
  bind=SUPER,backspace,exec,/usr/local/bin/swaylock -S
'';
}

In this case we want to start some processes on this host, like showing warp in my taskbar. The key line here being lib.mkAfter. Which will append the content after the existing config options we defined in hyprland.nix