summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lass/2configs/base.nix1
-rw-r--r--lass/2configs/zsh.nix126
2 files changed, 127 insertions, 0 deletions
diff --git a/lass/2configs/base.nix b/lass/2configs/base.nix
index 18acd15ab..6774845c0 100644
--- a/lass/2configs/base.nix
+++ b/lass/2configs/base.nix
@@ -5,6 +5,7 @@ with lib;
imports = [
../3modules/iptables.nix
../2configs/vim.nix
+ ../2configs/zsh.nix
{
users.extraUsers =
mapAttrs (_: h: { hashedPassword = h; })
diff --git a/lass/2configs/zsh.nix b/lass/2configs/zsh.nix
new file mode 100644
index 000000000..646e816fd
--- /dev/null
+++ b/lass/2configs/zsh.nix
@@ -0,0 +1,126 @@
+{ config, lib, pkgs, ... }:
+{
+ programs.zsh = {
+ enable = true;
+ shellInit = ''
+ #disable config wizard
+ zsh-newuser-install() { :; }
+ '';
+ interactiveShellInit = ''
+ HISTFILE=~/.histfile
+ HISTSIZE=1000000
+ SAVEHIST=100000
+ #unsetopt nomatch
+ setopt autocd extendedglob
+ bindkey -e
+ zstyle :compinstall filename '/home/lass/.zshrc'
+
+ #history magic
+ bindkey "" up-line-or-local-history
+ bindkey "" down-line-or-local-history
+
+ up-line-or-local-history() {
+ zle set-local-history 1
+ zle up-line-or-history
+ zle set-local-history 0
+ }
+ zle -N up-line-or-local-history
+ down-line-or-local-history() {
+ zle set-local-history 1
+ zle down-line-or-history
+ zle set-local-history 0
+ }
+ zle -N down-line-or-local-history
+
+ setopt share_history
+ setopt hist_ignore_dups
+ # setopt inc_append_history
+ bindkey '^R' history-incremental-search-backward
+
+ #C-x C-e open line in editor
+ autoload -z edit-command-line
+ zle -N edit-command-line
+ bindkey "^X^E" edit-command-line
+
+ #completion magic
+ fpath=(~/.zsh/completions $fpath)
+ autoload -Uz compinit
+ compinit
+ zstyle ':completion:*' menu select
+
+ #enable automatic rehashing of $PATH
+ zstyle ':completion:*' rehash true
+
+
+ #eval $( dircolors -b ~/.LS_COLORS )
+
+ #exports
+ export EDITOR='vim'
+ export MANPAGER='most'
+ export PAGER='vim -'
+ # export MANPAGER='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | vim -R -c "set ft=man nonu nomod nolist" -'
+
+ #beautiful colors
+ alias ls='ls --color'
+ zstyle ':completion:*:default' list-colors ''${(s.:.)LS_COLORS}
+
+ #emacs bindings
+ bindkey "[7~" beginning-of-line
+ bindkey "[8~" end-of-line
+ bindkey "Oc" emacs-forward-word
+ bindkey "Od" emacs-backward-word
+
+ #aliases
+ alias ll='ls -l'
+ alias la='ls -la'
+ alias pinginet='ping 8.8.8.8'
+ alias du='du -hd1'
+ alias qiv="qiv -f -m"
+ alias zshres="source ~/.zshrc"
+
+ #fancy window title magic
+ case $TERM in
+ (*xterm* | *rxvt*)
+
+ # Write some info to terminal title.
+ # This is seen when the shell prompts for input.
+ function precmd {
+ print -Pn "\e]0;%(1j,%j job%(2j|s|); ,)%~\a"
+ }
+ # Write command and args to terminal title.
+ # This is seen while the shell waits for a command to complete.
+ function preexec {
+ printf "\033]0;%s\a" "$1"
+ }
+ ;;
+ esac
+ '';
+ promptInit = ''
+ autoload -U promptinit
+ promptinit
+
+ error='%(?..%F{red}%?%f )'
+
+ case $UID in
+ 0)
+ username='%F{red}root%f'
+ ;;
+ 1337)
+ username=""
+ ;;
+ *)
+ username='%F{blue}%n%f'
+ ;;
+ esac
+
+ if test -n "$SSH_CLIENT"; then
+ PROMPT="$error$username@%F{magenta}%M%f %~ "
+ else
+ PROMPT="$error$username %~ "
+ fi
+
+
+ '';
+ };
+ users.defaultUserShell = "/run/current-system/sw/bin/zsh";
+}