zellij: adds options to integrate with zsh, bash and fish shells (#3926)

* zellij: adds options to integrate with zsh, bash and fish shells

* zellij: add tests for shell integration options

* zellij: eval setup auto start for fish integration

* zellij: use interactiveShellInit for fish integration

* zellij: fixes format issues

* zellij: enable shell integrations by default

* zellij: compresses shell integration test cases

* zellij: removes the disabled shell integration tests

* zellij: formats tests
This commit is contained in:
Erik Krieg 2023-05-11 15:25:46 -04:00 committed by GitHub
parent d97e8f8861
commit cc9f65d104
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 64 additions and 0 deletions

View File

@ -39,6 +39,18 @@ in {
list of options.
'';
};
enableBashIntegration = mkEnableOption "Enable Bash integration." // {
default = true;
};
enableZshIntegration = mkEnableOption "Enable Zsh integration." // {
default = true;
};
enableFishIntegration = mkEnableOption "Enable Fish integration." // {
default = true;
};
};
config = mkIf cfg.enable {
@ -55,5 +67,18 @@ in {
(cfg.settings != { } && (versionAtLeast cfg.package.version "0.32.0")) {
text = lib.hm.generators.toKDL { } cfg.settings;
};
programs.bash.initExtra = mkIf cfg.enableBashIntegration (mkOrder 200 ''
eval "$(zellij setup --generate-auto-start bash)"
'');
programs.zsh.initExtra = mkIf cfg.enableZshIntegration (mkOrder 200 ''
eval "$(zellij setup --generate-auto-start zsh)"
'');
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration
(mkOrder 200 ''
eval (zellij setup --generate-auto-start fish | string collect)
'');
};
}

View File

@ -133,6 +133,7 @@ import nmt {
./modules/programs/vscode
./modules/programs/watson
./modules/programs/wezterm
./modules/programs/zellij
./modules/programs/zplug
./modules/programs/zsh
./modules/xresources

View File

@ -0,0 +1 @@
{ zellij-enable-shells = ./enable-shells.nix; }

View File

@ -0,0 +1,37 @@
{ lib, ... }:
{
programs = {
# All shell integratons are enabled by default.
zellij.enable = true;
bash.enable = true;
zsh.enable = true;
fish.enable = true;
};
# Needed to avoid error with dummy fish package.
xdg.dataFile."fish/home-manager_generated_completions".source =
lib.mkForce (builtins.toFile "empty" "");
test.stubs = {
zsh = { };
zellij = { };
};
nmt.script = ''
assertFileExists home-files/.bashrc
assertFileContains \
home-files/.bashrc \
'eval "$(zellij setup --generate-auto-start bash)"'
assertFileExists home-files/.zshrc
assertFileContains \
home-files/.zshrc \
'eval "$(zellij setup --generate-auto-start zsh)"'
assertFileExists home-files/.config/fish/config.fish
assertFileContains \
home-files/.config/fish/config.fish \
'eval (zellij setup --generate-auto-start fish | string collect)'
'';
}