From cb057ab3258446160e37ef06e55ce1656374a392 Mon Sep 17 00:00:00 2001 From: Jamie Quigley Date: Mon, 19 Oct 2026 22:34:40 +0100 Subject: [PATCH] nixos/atuin: fix startup when settings is empty ATUIN_CONFIG_DIR points at /etc/atuin, but config.toml was only created when settings was non-empty. Without the directory, atuin failed to load its client settings. Always generate config.toml. Add a test covering the default configuration. Resolves #576122 Assisted-by: Claude Code:claude-sonnet-5-5 (cherry picked from commit 9e6d06ad543e6306572b8cf4d62413d2983c3fe0) --- nixos/modules/programs/atuin.nix | 4 ++-- nixos/tests/all-tests.nix | 1 + nixos/tests/atuin-default-settings.nix | 17 +++++++++++++++++ pkgs/by-name/at/atuin/package.nix | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 nixos/tests/atuin-default-settings.nix diff --git a/nixos/modules/programs/atuin.nix b/nixos/modules/programs/atuin.nix index 51541959606a..e17b866696a4 100644 --- a/nixos/modules/programs/atuin.nix +++ b/nixos/modules/programs/atuin.nix @@ -125,9 +125,9 @@ in environment.variables.ATUIN_CONFIG_DIR = "/etc/atuin"; environment.etc = lib.mkMerge [ - (lib.mkIf (cfg.settings != { }) { + { "atuin/config.toml".source = settingsFile; - }) + } (lib.mkIf (cfg.themes != { }) ( builtins.mapAttrs' ( diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 919f8ade8756..2c0b62c757ca 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -241,6 +241,7 @@ in atticd = runTest ./atticd.nix; attr = pkgs.callPackage ./attr.nix { }; atuin = runTest ./atuin.nix; + atuin-default-settings = runTest ./atuin-default-settings.nix; atuin-programs = runTest ./atuin-programs.nix; audiobookshelf = runTest ./audiobookshelf.nix; audit = runTest ./audit.nix; diff --git a/nixos/tests/atuin-default-settings.nix b/nixos/tests/atuin-default-settings.nix new file mode 100644 index 000000000000..e75f0e291e94 --- /dev/null +++ b/nixos/tests/atuin-default-settings.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: +{ + name = "atuin-default-settings"; + meta.maintainers = pkgs.atuin.meta.maintainers; + + nodes.machine = { + programs.atuin.enable = true; + }; + + testScript = '' + start_all() + machine.wait_for_unit("default.target") + + machine.succeed("test -f /etc/atuin/config.toml") + machine.succeed("bash -lc 'atuin doctor'") + ''; +} diff --git a/pkgs/by-name/at/atuin/package.nix b/pkgs/by-name/at/atuin/package.nix index dac5a4961653..afa778eb4e56 100644 --- a/pkgs/by-name/at/atuin/package.nix +++ b/pkgs/by-name/at/atuin/package.nix @@ -58,7 +58,7 @@ rustPlatform.buildRustPackage (finalAttrs: { passthru = { tests = { - inherit (nixosTests) atuin atuin-programs; + inherit (nixosTests) atuin atuin-programs atuin-default-settings; }; updateScript = nix-update-script { }; };