zsh: fix history.path issues
- Default value is set to static '$HOME/.zsh_history' -- dotDir is not prepended anymore - $HOME is not prepended to the option value - Ensure history path directory exists Fixes #886, replaces #427.
This commit is contained in:
parent
05dabb7239
commit
4505710565
|
@ -18,4 +18,8 @@ The state version in this release includes the changes below. These
|
||||||
changes are only active if the `home.stateVersion` option is set to
|
changes are only active if the `home.stateVersion` option is set to
|
||||||
"20.03" or later.
|
"20.03" or later.
|
||||||
|
|
||||||
* Nothing has happened.
|
* The <<opt-programs.zsh.history.path>> option is no longer prepended
|
||||||
|
by `$HOME`, which allows specifying absolute paths, for example,
|
||||||
|
using the xdg module. Also, the default value is fixed to
|
||||||
|
`$HOME/.zsh_history` and `dotDir` path is not prepended to it
|
||||||
|
anymore.
|
||||||
|
|
|
@ -1214,6 +1214,21 @@ in
|
||||||
A new module is available: 'programs.pazi'.
|
A new module is available: 'programs.pazi'.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
time = "2019-11-05T21:54:04+00:00";
|
||||||
|
condition = config.programs.zsh.enable;
|
||||||
|
message = ''
|
||||||
|
The 'programs.zsh.history.path' option behavior and the
|
||||||
|
default value has changed for state version 20.03 and above.
|
||||||
|
|
||||||
|
Specifically, '$HOME' will no longer be prepended to the
|
||||||
|
option value, which allows specifying absolute paths (e.g.
|
||||||
|
using the xdg module). Also, the default value is fixed to
|
||||||
|
'$HOME/.zsh_history' and 'dotDir' path is not prepended to
|
||||||
|
it anymore.
|
||||||
|
'';
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,8 @@ let
|
||||||
vicmd = "bindkey -a";
|
vicmd = "bindkey -a";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
stateVersion = config.home.stateVersion;
|
||||||
|
|
||||||
historyModule = types.submodule ({ config, ... }: {
|
historyModule = types.submodule ({ config, ... }: {
|
||||||
options = {
|
options = {
|
||||||
size = mkOption {
|
size = mkOption {
|
||||||
|
@ -43,8 +45,10 @@ let
|
||||||
|
|
||||||
path = mkOption {
|
path = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = relToDotDir ".zsh_history";
|
default = if versionAtLeast stateVersion "20.03"
|
||||||
defaultText = ".zsh_history";
|
then "$HOME/.zsh_history"
|
||||||
|
else relToDotDir ".zsh_history";
|
||||||
|
example = literalExample ''"''${config.xdg.dataHome}/zsh/zsh_history"'';
|
||||||
description = "History file location";
|
description = "History file location";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -402,8 +406,11 @@ in
|
||||||
# History options should be set in .zshrc and after oh-my-zsh sourcing.
|
# History options should be set in .zshrc and after oh-my-zsh sourcing.
|
||||||
# See https://github.com/rycee/home-manager/issues/177.
|
# See https://github.com/rycee/home-manager/issues/177.
|
||||||
HISTSIZE="${toString cfg.history.size}"
|
HISTSIZE="${toString cfg.history.size}"
|
||||||
HISTFILE="$HOME/${cfg.history.path}"
|
|
||||||
SAVEHIST="${toString cfg.history.save}"
|
SAVEHIST="${toString cfg.history.save}"
|
||||||
|
${if versionAtLeast config.home.stateVersion "20.03"
|
||||||
|
then ''HISTFILE="${cfg.history.path}"''
|
||||||
|
else ''HISTFILE="$HOME/${cfg.history.path}"''}
|
||||||
|
mkdir -p "$(dirname "$HISTFILE")"
|
||||||
|
|
||||||
setopt HIST_FCNTL_LOCK
|
setopt HIST_FCNTL_LOCK
|
||||||
${if cfg.history.ignoreDups then "setopt" else "unsetopt"} HIST_IGNORE_DUPS
|
${if cfg.history.ignoreDups then "setopt" else "unsetopt"} HIST_IGNORE_DUPS
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
{
|
{
|
||||||
zsh-session-variables = ./session-variables.nix;
|
zsh-session-variables = ./session-variables.nix;
|
||||||
|
zsh-history-path-new-default = ./history-path-new-default.nix;
|
||||||
|
zsh-history-path-new-custom = ./history-path-new-custom.nix;
|
||||||
|
zsh-history-path-old-default = ./history-path-old-default.nix;
|
||||||
|
zsh-history-path-old-custom = ./history-path-old-custom.nix;
|
||||||
}
|
}
|
||||||
|
|
23
tests/modules/programs/zsh/history-path-new-custom.nix
Normal file
23
tests/modules/programs/zsh/history-path-new-custom.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
home.stateVersion = "20.03";
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
history.path = "$HOME/some/directory/zsh_history";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
zsh = pkgs.writeScriptBin "dummy-zsh" "";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/some/directory/zsh_history"$'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
20
tests/modules/programs/zsh/history-path-new-default.nix
Normal file
20
tests/modules/programs/zsh/history-path-new-default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
home.stateVersion = "20.03";
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
zsh = pkgs.writeScriptBin "dummy-zsh" "";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/.zsh_history"$'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
23
tests/modules/programs/zsh/history-path-old-custom.nix
Normal file
23
tests/modules/programs/zsh/history-path-old-custom.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
home.stateVersion = "19.09";
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
history.path = "some/directory/zsh_history";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
zsh = pkgs.writeScriptBin "dummy-zsh" "";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/some/directory/zsh_history"$'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
20
tests/modules/programs/zsh/history-path-old-default.nix
Normal file
20
tests/modules/programs/zsh/history-path-old-default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
home.stateVersion = "19.03";
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
zsh = pkgs.writeScriptBin "dummy-zsh" "";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/.zsh_history"$'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue