From 84e1adb0cdd13f5f29886091c7234365e12b1e7f Mon Sep 17 00:00:00 2001 From: Dietrich Daroch Date: Sun, 19 Oct 2025 11:40:58 -0300 Subject: [PATCH] zellij: Allow using extraConfig without settings Fixes https://github.com/nix-community/home-manager/issues/8015 --- modules/programs/zellij.nix | 7 +++-- .../programs/zellij/config-extra_config.nix | 29 +++++++++++++++++++ .../zellij/{config.nix => config-mixed.nix} | 2 -- .../programs/zellij/config-settings.nix | 24 +++++++++++++++ tests/modules/programs/zellij/default.nix | 4 ++- 5 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 tests/modules/programs/zellij/config-extra_config.nix rename tests/modules/programs/zellij/{config.nix => config-mixed.nix} (97%) create mode 100644 tests/modules/programs/zellij/config-settings.nix diff --git a/modules/programs/zellij.nix b/modules/programs/zellij.nix index 95256530f..48c4fe31c 100644 --- a/modules/programs/zellij.nix +++ b/modules/programs/zellij.nix @@ -274,12 +274,15 @@ in { "zellij/config.yaml" = - mkIf (cfg.settings != { } && (lib.versionOlder cfg.package.version "0.32.0")) + mkIf ((lib.versionOlder cfg.package.version "0.32.0") && cfg.settings != { }) { source = yamlFormat.generate "zellij.yaml" cfg.settings; }; "zellij/config.kdl" = - mkIf (cfg.settings != { } && (lib.versionAtLeast cfg.package.version "0.32.0")) + mkIf + ( + (lib.versionAtLeast cfg.package.version "0.32.0") && (cfg.settings != { } || cfg.extraConfig != "") + ) { text = (lib.hm.generators.toKDL { } cfg.settings) diff --git a/tests/modules/programs/zellij/config-extra_config.nix b/tests/modules/programs/zellij/config-extra_config.nix new file mode 100644 index 000000000..9cdf5addf --- /dev/null +++ b/tests/modules/programs/zellij/config-extra_config.nix @@ -0,0 +1,29 @@ +{ + programs = { + zellij = { + enable = true; + + # No `settings` + extraConfig = '' + This_could_have_been_json { + } + ''; + }; + }; + + test.stubs = { + zellij = { }; + }; + + nmt.script = '' + assertFileExists home-files/.config/zellij/config.kdl + + assertFileContains \ + home-files/.config/zellij/config.kdl \ + '// extraConfig' + + assertFileContains \ + home-files/.config/zellij/config.kdl \ + 'This_could_have_been_json' + ''; +} diff --git a/tests/modules/programs/zellij/config.nix b/tests/modules/programs/zellij/config-mixed.nix similarity index 97% rename from tests/modules/programs/zellij/config.nix rename to tests/modules/programs/zellij/config-mixed.nix index c7ead7032..8ca6d7102 100644 --- a/tests/modules/programs/zellij/config.nix +++ b/tests/modules/programs/zellij/config-mixed.nix @@ -1,5 +1,3 @@ -{ lib, ... }: - { programs = { zellij = { diff --git a/tests/modules/programs/zellij/config-settings.nix b/tests/modules/programs/zellij/config-settings.nix new file mode 100644 index 000000000..68903b877 --- /dev/null +++ b/tests/modules/programs/zellij/config-settings.nix @@ -0,0 +1,24 @@ +{ + programs = { + zellij = { + enable = true; + + settings = { + default_layout = "welcome"; + }; + # No extraConfig + }; + }; + + test.stubs = { + zellij = { }; + }; + + nmt.script = '' + assertFileExists home-files/.config/zellij/config.kdl + + assertFileContains \ + home-files/.config/zellij/config.kdl \ + 'default_layout "welcome"' + ''; +} diff --git a/tests/modules/programs/zellij/default.nix b/tests/modules/programs/zellij/default.nix index 638035690..90b939ce8 100644 --- a/tests/modules/programs/zellij/default.nix +++ b/tests/modules/programs/zellij/default.nix @@ -1,5 +1,7 @@ { - zellij-config = ./config.nix; + zellij-config-mixed = ./config-mixed.nix; + zellij-config-settings = ./config-settings.nix; + zellij-config-extra_config = ./config-extra_config.nix; zellij-enable-shells = ./enable-shells.nix; zellij-layout = ./layout.nix; zellij-theme = ./theme.nix;