pub-solar-os/profiles/develop/zsh/default.nix
2019-12-15 01:08:22 -07:00

107 lines
2.1 KiB
Nix

{ lib, pkgs, ... }:
let
inherit (builtins)
concatStringsSep
;
inherit (lib)
fileContents
;
in
{
users.defaultUserShell = pkgs.zsh;
environment = {
sessionVariables = let
fd = "${pkgs.fd}/bin/fd -H";
in
{
BAT_PAGER = "less";
SKIM_ALT_C_COMMAND =
"while read line; do "
+ "line=\"'\${(Q)line}'\"; [[ -d \"'$line'\" ]] && echo \"'$line'\"; "
+ "done < $HOME/.cache/zsh-cdr/recent-dirs";
SKIM_DEFAULT_COMMAND = fd;
SKIM_CTRL_T_COMMAND = fd;
};
shellAliases = {
cat = "${pkgs.bat}/bin/bat";
df = "df -h";
du = "du -h";
ls = "${pkgs.exa}/bin/exa";
l = "ls -lh --git";
la = "l -a";
rz = "exec zsh";
};
systemPackages = with pkgs; [
bzip2
direnv
gitAndTools.hub
gzip
lrzip
p7zip
skim
unrar
unzip
zsh-completions
xz
];
};
nixpkgs.overlays = let
purs = self: super:
{ purs = super.callPackage ../../../pkgs/shells/zsh/purs {}; };
in
[ purs ];
programs.zsh = {
enable = true;
promptInit = ''
source ${pkgs.purs}/share/zsh/plugins/purs/purs.zsh
'';
interactiveShellInit = let
zshrc = fileContents ./zshrc;
paths = with pkgs; [
"${skim}/share/skim/completion.zsh"
"${oh-my-zsh}/share/oh-my-zsh/plugins/sudo/sudo.plugin.zsh"
"${oh-my-zsh}/share/oh-my-zsh/plugins/extract/extract.plugin.zsh"
"${zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
"${zsh-history-substring-search}/share/zsh-history-substring-search/zsh-history-substring-search.zsh"
];
source = map
(source: "source " + source)
paths;
plugins = concatStringsSep "\n"
(
[
"${pkgs.any-nix-shell}/bin/any-nix-shell zsh --info-right | source /dev/stdin"
] ++ source
);
in
''
${plugins}
${zshrc}
source ${pkgs.skim}/share/skim/key-bindings.zsh
'';
};
}