From cc9f65d104e5227d103a529a9fc3687ef4ccb117 Mon Sep 17 00:00:00 2001 From: Erik Krieg <10244162+erikkrieg@users.noreply.github.com> Date: Thu, 11 May 2023 15:25:46 -0400 Subject: [PATCH] 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 --- modules/programs/zellij.nix | 25 +++++++++++++ tests/default.nix | 1 + tests/modules/programs/zellij/default.nix | 1 + .../modules/programs/zellij/enable-shells.nix | 37 +++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 tests/modules/programs/zellij/default.nix create mode 100644 tests/modules/programs/zellij/enable-shells.nix diff --git a/modules/programs/zellij.nix b/modules/programs/zellij.nix index 37cd010e0..fc98be7f8 100644 --- a/modules/programs/zellij.nix +++ b/modules/programs/zellij.nix @@ -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) + ''); }; } diff --git a/tests/default.nix b/tests/default.nix index 979626880..134f2324e 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -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 diff --git a/tests/modules/programs/zellij/default.nix b/tests/modules/programs/zellij/default.nix new file mode 100644 index 000000000..f4b521386 --- /dev/null +++ b/tests/modules/programs/zellij/default.nix @@ -0,0 +1 @@ +{ zellij-enable-shells = ./enable-shells.nix; } diff --git a/tests/modules/programs/zellij/enable-shells.nix b/tests/modules/programs/zellij/enable-shells.nix new file mode 100644 index 000000000..812c3bc3a --- /dev/null +++ b/tests/modules/programs/zellij/enable-shells.nix @@ -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)' + ''; +}