{ pkgs, ... }: let homedir = builtins.getEnv "HOME"; in { home = { packages = import ./packages.nix { inherit pkgs; }; sessionVariables = { EDITOR = "vim"; LANG = "en_US.UTF-8"; PATH = "${homedir}/bin:${homedir}/.cabal/bin:${homedir}/.local/bin:$PATH"; PAGER = "less"; }; file = { mutt = { text = (builtins.readFile ./muttrc) + (builtins.readFile ./mutt/solarized.muttrc); target = ".muttrc"; }; mailcap = { source = ./mailcap; target = ".mailcap"; }; tmux = { source = ./tmux; target = ".tmux.conf"; }; # use this because i override tls settings msmtprc = { source = ./msmtprc; target = ".msmtprc"; }; }; }; programs = { home-manager = { enable = true; path = "${homedir}/config/home-manager"; }; direnv = { enable = true; }; vim = { enable = true; plugins = [ "ctrlp" "fugitive" "editorconfig-vim" "gitgutter" "surround" "vim-colorschemes" ]; extraConfig = builtins.readFile ./vimrc; }; git = { enable = true; userName = "Ben Sima"; userEmail = "ben@bsima.me"; ignores = [ "*~" "*.swp" ]; package = pkgs.gitAndTools.gitFull; aliases = { authors = "shortlog -s -n"; }; extraConfig = '' [push] default = simple [commit] template = ~/.config/nixpkgs/git-commit-template [sendemail] smtpuser = ben@bsima.me smptserverport = 587 smptserver = mail.bsima.me chainreplyto = false composeencoding = UTF-8 ''; }; bash = { enable = true; initExtra = '' DIR=~/.nix-profile/etc/profile.d [[ -f "$DIR/nix.sh" ]] && . "$DIR/nix.sh" [[ -f "$DIR/hm-session-vars.sh" ]] && . "$DIR/hm-session-vars.sh" ''; shellAliases = { #z = "fasd_cd -d"; # cd, same functionality as j in autojump #zz = "fasd_cd -d -i"; # cd with interactive selection a = "fasd -a"; # any add = "git add --ignore-removal"; ci = "git commit"; d = "fasd -d"; # directory day = "date +%a"; ddate = "date +%Y.%m.%d"; dday = "date +%A"; et = "emacs -nw"; # emacs in a terminal f = "fasd -f"; # file fetch = "git fetch"; g = "grep -in"; ga = "git add -A"; gb = "git branch"; gc = "git commit"; gca = "git commit -a"; gco = "git checkout"; gd = "git diff"; gl = "git pull --prune"; glog = ''git log --decorate --all --graph --pretty=format:"%Cred%h%Creset %an: %s - %Creset %C(yellow)%d%Creset %Cgreen(%cr)%Creset" --abbrev-commit --date=relative''; gp = "git push origin HEAD"; gs = "git status -sb"; hs = "home-manager switch"; ll = "ls -l"; pull = "git pull"; push = "git push"; rm = "rm -i"; s = "fasd -si"; # show / search / select sd = "fasd -sid"; # interactive directory selection sf = "fasd -sif"; # interactive file selection showpath = "echo $PATH | sed 's/:/\n/g'"; tdate = "date +%Y.%m.%d..%H.%M"; ttime = "date +%H.%M"; typeless = "history | tail -n 20000 | sed 's/.* //' | sort | uniq -c | sort -g | tail -n 100"; v = "vim"; "v." = "vim ."; vimdiff = "vim -d"; }; }; emacs = { enable = true; extraPackages = epkgs: import ./emacs-packages.nix { inherit epkgs; }; }; }; }