blob: 320705182b6452be8bf84e5a4e4400977a7f9bca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
{ config
, lib
, pkgs
, ...
}:
let
inherit (pkgs) stdenv;
zshrc = ".config/zsh/.zshrc";
mkZshPlugin = attrs@{ name, file ? "${name}.plugin.zsh", ... }: {
inherit name file;
src = stdenv.mkDerivation {
inherit (attrs) src;
name = "zsh-plugin-${attrs.name}";
buildInputs = [ pkgs.zsh ];
buildPhase = ''
zsh -c 'for f in **/*.zsh; zcompile "$f"'
'';
installPhase = ''
cp -a $PWD $out/
'';
};
};
in
{
home.packages = with pkgs; [
zsh-completions
];
home.sessionVariables = {
GHQ_ROOT = lib.mkDefault "${config.home.homeDirectory}/projects";
};
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
defaultKeymap = "emacs";
dotDir = ".config/zsh";
history = {
expireDuplicatesFirst = true;
extended = true;
path = "${config.home.homeDirectory}/.local/share/zsh/history";
save = 200000;
size = 100000;
share = false;
ignorePatterns = [
"rm *"
"trash *"
"pkill *"
"* aria2c *"
];
};
localVariables = {
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=8";
};
plugins = map mkZshPlugin [
{
name = "zsh-bd";
file = "bd.plugin.zsh";
src = pkgs.zsh-bd.src;
}
{
name = "zsh-autopair";
src = pkgs.zsh-autopair.src;
}
{
name = "anyframe";
src = pkgs.fetchFromGitHub {
owner = "mollifier";
repo = "anyframe";
rev = "598675303044df8e9d04722f3adff4f63a238922";
# date = 2017-07-19T21:59:49+09:00;
sha256 = "08bjm1dd2mpv8rk8x6yvm6gj490rgimmiq7ln4jr5hik2k3mm82r";
};
}
{
name = "zsh-powerlevel10k";
src = pkgs.zsh-powerlevel10k.src;
file = "dummy";
}
];
# Put this in /etc/paths.d/ on Darwin instead
envExtra = lib.optionalString (!stdenv.isDarwin) ''
if [[ ''${path[(I)$HOME/.local/bin ]} ]]
then
path=($HOME/.local/bin $path)
fi
'';
initExtraFirst = ''
if [[ $TERM != "dumb" ]]
then
if [[ -r "${config.xdg.cacheHome}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then
source "${config.xdg.cacheHome}/p10k-instant-prompt-''${(%):-%n}.zsh"
fi
typeset -g POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true
source $ZDOTDIR/plugins/zsh-powerlevel10k/powerlevel10k.zsh-theme
fi
'';
initExtra =
''
typeset -T GHQ_ROOT ghq_root
function hist-freq-subcommands () {
fc -l -m "$1*" -10000 | cut -d' ' -f4- | sort | uniq -c | sort -gr | head -n100 | less
}
source ${pkgs.fzf}/share/fzf/key-bindings.zsh
source ${pkgs.fzf}/share/fzf/completion.zsh
''
+ builtins.readFile ../zsh/zshrc
+ (
if stdenv.isDarwin
then builtins.readFile ../zsh/zshrc.darwin
else ""
);
};
home.file."${config.xdg.configHome}/zsh/.p10k.zsh".source = ../zsh/p10k.zsh;
}
|