{
  pkgs,
  inputs,
  ...
}: let
  layout =
    pkgs.writeText "default.kdl"
    ''
      layout {
        tab {
          pane
        }

        swap_tiled_layout name="vertical" {
          tab max_panes=5 {
            pane split_direction="vertical" {
              pane
              pane { children; }
            }
          }
          tab max_panes=8 {
            pane split_direction="vertical" {
              pane { children; }
              pane { pane; pane; pane; pane; }
            }
          }
          tab max_panes=12 {
            pane split_direction="vertical" {
              pane { children; }
              pane { pane; pane; pane; pane; }
              pane { pane; pane; pane; pane; }
            }
          }
        }

        swap_tiled_layout name="horizontal" {
          tab max_panes=5 {
            pane
            pane
          }
          tab max_panes=8 {
            pane {
              pane split_direction="vertical" { children; }
              pane split_direction="vertical" { pane; pane; pane; pane; }
            }
          }
          tab max_panes=12 {
            pane {
              pane split_direction="vertical" { children; }
              pane split_direction="vertical" { pane; pane; pane; pane; }
              pane split_direction="vertical" { pane; pane; pane; pane; }
            }
          }
        }

        default_tab_template {
          pane size=1 borderless=true {
            plugin location="file:${inputs.zjstatus.packages.${pkgs.system}.default}/bin/zjstatus.wasm" {
              format_left  "#[bg=#1D1D2E,fg=#C9D2F5,bold] {session} {mode} {tabs}"
              format_right "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{datetime}#[bg=#1D1D2E,fg=#C9D2F5]"

              mode_locked "#[fg=magenta,bold] {name} "
              mode_normal "#[fg=green,bold] {name} "
              mode_resize "#[fg=orange,bold] {name} "
              mode_default_to_mode "resize"

              tab_normal "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#1D1D2E,fg=#C9D2F5]"
              tab_active "#[bg=#A6DA95,fg=#1D1D2E]#[bg=#A6DA95,fg=#A6DA95]#[bg=#A6DA95,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#A6DA95,fg=#A6DA95]#[bg=#1D1D2E,fg=#A6DA95]"

              tab_sync_indicator       " "
              tab_fullscreen_indicator "□ "
              tab_floating_indicator   "󰉈 "

              datetime        "#[bg=#C9D2F5,fg=#1D1D2E,bold]{format} "
              datetime_format "%Y-%m-%d %H:%M"
              datetime_timezone "Europe/Amsterdam"
            }
          }
          children
          pane size=2 borderless=true {
            plugin location="status-bar"
          }
        }
      }
    '';
  helix_zellij =
    pkgs.writeText "helix.kdl"
    ''
      layout {
        tab {
          pane {
            command "hx"
            args "."
          }
          pane split_direction="vertical" size="20%" {}
        }
        swap_tiled_layout name="vertical" {
          tab max_panes=5 {
            pane split_direction="vertical" {
              pane
              pane { children; }
            }
          }
          tab max_panes=8 {
            pane split_direction="vertical" {
              pane { children; }
              pane { pane; pane; pane; pane; }
            }
          }
          tab max_panes=12 {
            pane split_direction="vertical" {
              pane { children; }
              pane { pane; pane; pane; pane; }
              pane { pane; pane; pane; pane; }
            }
          }
        }

        swap_tiled_layout name="horizontal" {
          tab max_panes=5 {
            pane
            pane
          }
          tab max_panes=8 {
            pane {
              pane split_direction="vertical" { children; }
              pane split_direction="vertical" { pane; pane; pane; pane; }
            }
          }
          tab max_panes=12 {
            pane {
              pane split_direction="vertical" { children; }
              pane split_direction="vertical" { pane; pane; pane; pane; }
              pane split_direction="vertical" { pane; pane; pane; pane; }
            }
          }
        }

        default_tab_template {
          pane size=1 borderless=true {
            plugin location="file:${inputs.zjstatus.packages.${pkgs.system}.default}/bin/zjstatus.wasm" {
              format_left  "#[bg=#1D1D2E,fg=#C9D2F5,bold] {session} {mode} {tabs}"
              format_right "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{datetime}#[bg=#1D1D2E,fg=#C9D2F5]"

              mode_locked "#[fg=magenta,bold] {name} "
              mode_normal "#[fg=green,bold] {name} "
              mode_resize "#[fg=orange,bold] {name} "
              mode_default_to_mode "resize"

              tab_normal "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#1D1D2E,fg=#C9D2F5]"
              tab_active "#[bg=#A6DA95,fg=#1D1D2E]#[bg=#A6DA95,fg=#A6DA95]#[bg=#A6DA95,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#A6DA95,fg=#A6DA95]#[bg=#1D1D2E,fg=#A6DA95]"

              tab_sync_indicator       " "
              tab_fullscreen_indicator "□ "
              tab_floating_indicator   "󰉈 "

              datetime        "#[bg=#C9D2F5,fg=#1D1D2E,bold]{format} "
              datetime_format "%Y-%m-%d %H:%M"
              datetime_timezone "Europe/Amsterdam"
            }
          }
          children
          pane size=2 borderless=true {
            plugin location="status-bar"
          }
        }
      }
    '';
in {
  programs.zellij = {
    # This autostarts zellij on zsh start
    # TODO find specific settings for vscode to avoid
    enable = true;
    enableZshIntegration = true;
    settings = {
      session_serialization = true;
      # theme = "catppuccin-macchiato";

      themes = {
        catppuccin-mocha = {
          bg = "#585b70";
          fg = "#cdd6f4";
          red = "#f38ba8";
          green = "#a6e3a1";
          blue = "#89b4fa";
          yellow = "#f9e2af";
          magenta = "#f5c2e7";
          orange = "#fab387";
          cyan = "#89dceb";
          black = "#181825";
          white = "#cdd6f4";
        };
        catppuccin-macchiato = {
          bg = "#5b6078";
          fg = "#cad3f5";
          red = "#ed8796";
          green = "#a6da95";
          blue = "#8aadf4";
          yellow = "#eed49f";
          magenta = "#f5bde6";
          orange = "#f5a97f";
          cyan = "#91d7e3";
          black = "#1e2030";
          white = "#cad3f5";
        };
      };
    };
  };
  home.file = {
    "layout" = {
      source = "${layout}";
      target = ".config/zellij/layouts/default.kdl";
    };

    "helix_zellij" = {
      source = "${helix_zellij}";
      target = ".config/zellij/layouts/helix.kdl";
    };
  };
  #home.file = {
  #  "config" = {
  #    source = ./zellij.kdl;
  #    target = ".config/zellij/config.kdl";
  #  };
  #};
}