{ pkgs, ... }: let homedir = builtins.getEnv "HOME"; locale = "en_US.UTF-8"; gpgid = "D09299626FA78AF8"; gitCommitTemplate = ./git-commit-template; in { home = { packages = import ./packages.nix { inherit pkgs; }; sessionVariables = { GPGID = gpgid; EDITOR = "emacsclient"; LANG = locale; LANGUAGE = locale; #LC_ALL = locale; PATH = "${homedir}/bin:${homedir}/.cabal/bin:${homedir}/.local/bin:$PATH"; PAGER = "less"; LEDGER_FILE = "${homedir}/.hledger.journal"; XTERM_LOCALE = locale; LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive"; }; keyboard.options = [ "caps:ctrl_modifier" ]; file = { mutt = { text = (builtins.readFile ./muttrc) + (builtins.readFile ./mutt/solarized.muttrc); target = ".muttrc"; }; mailcap = { source = ./mailcap; target = ".mailcap"; }; }; }; programs = { home-manager = { enable = true; path = "${homedir}/cfg/home-manager"; }; tmux = { enable = true; extraConfig = builtins.readFile ./tmux; baseIndex = 0; clock24 = true; customPaneNavigationAndResize = true; keyMode = "vi"; shortcut = "'C-\\'"; terminal = "screen-256color"; sensibleOnTop = true; }; ssh = { enable = true; forwardAgent = true; matchBlocks = { gh = { hostname = "github.com"; user = "git"; identityFile = [ "${homedir}/.ssh/id_rsa" ]; identitiesOnly = true; }; lithium = { hostname = "69.181.254.154"; user = "ben"; identityFile = [ "${homedir}/.ssh/hidor-kahih" ]; identitiesOnly = true; }; nutin-madaj = { hostname = "simatime.com"; user = "ben"; identityFile = [ "${homedir}/.ssh/id_rsa" ]; identitiesOnly = true; }; }; }; direnv = { enable = true; }; skim = { enable = true; enableBashIntegration = true; }; vim = { enable = true; plugins = [ "ctrlp" "fugitive" "editorconfig-vim" "surround" "vim-colorschemes" ]; extraConfig = builtins.readFile ./vimrc; }; git = { enable = true; userName = "Ben Sima"; userEmail = "ben@bsima.me"; ignores = [ "*~" "*.swp" ]; package = pkgs.gitAndTools.gitFull; signing = { key = gpgid; signByDefault = true; }; aliases = { authors = "shortlog -s -n"; }; extraConfig = '' [push] default = simple [commit] template = ${gitCommitTemplate} [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" function cd() { builtin cd "$@" && ls } ''; 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 ."; vs = "vim $(sk -m)"; vk = "vim $(sk -m)"; vimdiff = "vim -d"; }; }; emacs = { enable = true; extraPackages = epkgs: import ./emacs-packages.nix { inherit epkgs; }; }; }; }