one flake containing all of my nixos configs
{
  config,
  lib,
  ...
}: let
  mkLayoutFile = file_name: {
    "zellij/layouts/${file_name}".source = ./layouts/${file_name};
  };
  merge = lib.foldl (a: b: a // b) {};
  layouts = with builtins; map mkLayoutFile (attrNames (readDir ./layouts));
in {
  xdg.configFile =
    (merge layouts)
    // {
      "zellij/themes/rose-pine.kdl".source = ./themes/rose-pine.kdl;
      "zellij/config.kdl".text =
        ''
          layout_dir "${config.xdg.configHome}/zellij/layouts"
          theme_dir "${config.xdg.configHome}/zellij/themes"
        ''
        + builtins.readFile ./config.kdl;
    };
}