83 lines
2.1 KiB
Nix
83 lines
2.1 KiB
Nix
{
|
|
symlinkJoin,
|
|
makeWrapper,
|
|
pkgs,
|
|
lib,
|
|
zellij ? pkgs.zellij,
|
|
shell ? pkgs.zsh,
|
|
}: let
|
|
colors = import ../colors.nix;
|
|
|
|
config = let
|
|
plugins = {
|
|
sessionizer = builtins.fetchurl {
|
|
url = "https://github.com/laperlej/zellij-sessionizer/releases/download/v0.4.3/zellij-sessionizer.wasm";
|
|
sha256 = "0d43jhlhm7p8pvd8kcylfbfy3dahr8q4yngpnjyqivapwip9csq0";
|
|
};
|
|
};
|
|
in
|
|
pkgs.writeText "config.kdl" ''
|
|
plugins {
|
|
zellij-sessionizer location="file:${plugins.sessionizer}"
|
|
|
|
tab-bar location="zellij:tab-bar"
|
|
status-bar location="zellij:status-bar"
|
|
compact-bar location="zellij:compact-bar"
|
|
session-manager location="zellij:session-manager"
|
|
}
|
|
|
|
default_shell "${lib.getExe shell}"
|
|
|
|
themes {
|
|
defautl {
|
|
bg "${colors.base03}";
|
|
fg "${colors.base05}";
|
|
red "${colors.base01}";
|
|
green "${colors.base0B}";
|
|
blue "${colors.base0D}";
|
|
yellow "${colors.base0A}";
|
|
magenta "${colors.base0E}";
|
|
orange "${colors.base09}";
|
|
cyan "${colors.base0C}";
|
|
black "${colors.base00}";
|
|
white "${colors.base07}";
|
|
}
|
|
}
|
|
theme "default"
|
|
|
|
${builtins.readFile ./config.kdl}
|
|
'';
|
|
|
|
drv = symlinkJoin ({
|
|
paths = [zellij];
|
|
|
|
nativeBuildInputs = [makeWrapper];
|
|
|
|
postBuild = ''
|
|
wrapProgram $out/bin/zellij \
|
|
--set-default ZELLIJ_CONFIG_FILE ${config}
|
|
'';
|
|
}
|
|
// {inherit (zellij) name pname meta;});
|
|
in
|
|
pkgs.stdenv.mkDerivation (rec {
|
|
name = drv.name;
|
|
pname = drv.pname;
|
|
|
|
buildCommand = let
|
|
desktopEntry = pkgs.makeDesktopItem {
|
|
name = pname;
|
|
desktopName = name;
|
|
exec = "${lib.getExe drv}";
|
|
terminal = true;
|
|
};
|
|
in ''
|
|
mkdir -p $out/bin
|
|
cp ${lib.getExe drv} $out/bin
|
|
|
|
mkdir -p $out/share/applications
|
|
cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop
|
|
'';
|
|
}
|
|
// {inherit (zellij) meta version;})
|