226 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  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";
 | 
						|
  #  };
 | 
						|
  #};
 | 
						|
}
 |