106 lines
2.5 KiB
Nix
106 lines
2.5 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
zshrc = pkgs.writeTextFile {
|
|
name = ".zshrc";
|
|
text = ''
|
|
# Lines configured by zsh-newuser-install
|
|
HISTFILE=~/.zhistory
|
|
HISTSIZE=100000
|
|
SAVEHIST=100000
|
|
setopt appendhistory notify
|
|
unsetopt beep
|
|
bindkey -e
|
|
# End of lines configured by zsh-newuser-install
|
|
# The following lines were added by compinstall
|
|
#
|
|
|
|
# Use menu complete immediately instead of after the first tab
|
|
setopt MENU_COMPLETE
|
|
|
|
zstyle :compinstall filename "$HOME/.zshrc"
|
|
|
|
autoload -Uz compinit
|
|
compinit
|
|
# End of lines added by compinstall
|
|
|
|
# Enable the 2d menu for tab completion
|
|
zstyle ':completion:*' menu select
|
|
|
|
autoload colors zsh/terminfo
|
|
if [[ "$terminfo[colors]" -ge 8 ]]; then
|
|
colors
|
|
fi
|
|
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
|
|
eval PR_$color='%{$terminfo[bold]$fg[''${(L)color}]%}'
|
|
eval PR_LIGHT_$color='%{$fg[''${(L)color}]%}'
|
|
(( count = $count + 1 ))
|
|
done
|
|
PR_NO_COLOR="%{$terminfo[sgr0]%}"
|
|
PS1="[$PR_BLUE%n$PR_WHITE@$PR_GREEN%U%m%u$PR_NO_COLOR:$PR_RED%2c$PR_NO_COLOR]%(!.#.$) "
|
|
|
|
source ${pkgs.zsh-histdb}/share/zsh/plugins/zsh-histdb/sqlite-history.zsh
|
|
autoload -Uz add-zsh-hook
|
|
|
|
source ${pkgs.zsh-histdb}/share/zsh/plugins/zsh-histdb/histdb-interactive.zsh
|
|
bindkey '^r' _histdb-isearch
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
imports = [ ];
|
|
|
|
options.me = {
|
|
zsh.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
example = true;
|
|
description = "Whether we want to install zsh.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.me.zsh.enable (
|
|
lib.mkMerge [
|
|
{
|
|
environment.systemPackages = with pkgs; [
|
|
zsh
|
|
];
|
|
|
|
users.users.talexander.shell = pkgs.zsh;
|
|
environment.shells = with pkgs; [ zsh ];
|
|
|
|
programs.zsh = {
|
|
enable = true;
|
|
};
|
|
|
|
home-manager.users.talexander =
|
|
{ pkgs, ... }:
|
|
{
|
|
home.file.".zshrc" = {
|
|
source = "${zshrc}";
|
|
};
|
|
};
|
|
|
|
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
|
hideMounts = true;
|
|
users.talexander = {
|
|
directories = [
|
|
{
|
|
directory = ".histdb";
|
|
user = "talexander";
|
|
group = "talexander";
|
|
mode = "0700";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|
|
]
|
|
);
|
|
}
|