diff --git a/modules/programs/devenv.nix b/modules/programs/devenv.nix index 27e76f3e70..8652e20891 100644 --- a/modules/programs/devenv.nix +++ b/modules/programs/devenv.nix @@ -14,6 +14,7 @@ let ; cfg = config.programs.devenv; + yamlFormat = pkgs.formats.yaml { }; in { @@ -34,6 +35,21 @@ in enableZshIntegration = lib.hm.shell.mkZshIntegrationOption { inherit config; }; + settings = lib.mkOption { + inherit (yamlFormat) type; + default = { }; + example = { + shell.prompt_prefix = false; + tui.statusline.enabled = false; + }; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/devenv/config.yaml`. + + See for + available options and documentation. + ''; + }; + }; config = mkIf cfg.enable { @@ -59,5 +75,8 @@ in } "; }; }; + xdg.configFile."devenv/config.yaml" = lib.mkIf (cfg.settings != { }) { + source = yamlFormat.generate "config.yaml" ({ version = 1; } // cfg.settings); + }; }; } diff --git a/tests/modules/programs/devenv/basic-config.nix b/tests/modules/programs/devenv/basic-config.nix index ee7ff6530a..b5aa6268c8 100644 --- a/tests/modules/programs/devenv/basic-config.nix +++ b/tests/modules/programs/devenv/basic-config.nix @@ -7,6 +7,10 @@ enableNushellIntegration = true; enableZshIntegration = true; enableFishIntegration = true; + settings = { + shell.prompt_prefix = false; + tui.statusline.enabled = false; + }; package = config.lib.test.mkStubPackage { name = "devenv"; @@ -51,5 +55,8 @@ assertFileExists "${nushellConfigFile}" assertFileRegex "${nushellConfigFile}" 'source /nix/store.*devenv-nushell-config.nu' + assertFileExists home-files/.config/devenv/config.yaml + assertFileContent home-files/.config/devenv/config.yaml ${./expected.yaml} + ''; } diff --git a/tests/modules/programs/devenv/expected.yaml b/tests/modules/programs/devenv/expected.yaml new file mode 100644 index 0000000000..3da1cefdfe --- /dev/null +++ b/tests/modules/programs/devenv/expected.yaml @@ -0,0 +1,8 @@ +%YAML 1.1 +--- +shell: + prompt_prefix: false +tui: + statusline: + enabled: false +version: 1