{ pkgs, ... }: { home.packages = [ pkgs.ag pkgs.cabal2nix pkgs.cloc pkgs.dict pkgs.entr pkgs.fasd pkgs.file pkgs.gimp pkgs.jq pkgs.keepassx pkgs.keybase pkgs.keybase-gui pkgs.mplayer pkgs.mpv pkgs.offlineimap pkgs.pavucontrol pkgs.pinentry pkgs.qtpass pkgs.racket pkgs.ranger pkgs.ripgrep pkgs.scrot pkgs.shutter pkgs.stack2nix pkgs.tdesktop pkgs.transmission-gtk pkgs.tree pkgs.unrar pkgs.vlc pkgs.vpnc pkgs.w3m pkgs.wakatime pkgs.yank pkgs.youtube-dl ]; programs.bash = { enable = true; shellAliases = { a = "fasd -a"; # any s = "fasd -si"; # show / search / select d = "fasd -d"; # directory f = "fasd -f"; # file sd = "fasd -sid"; # interactive directory selection sf = "fasd -sif"; # interactive file selection z = "fasd_cd -d"; # cd, same functionality as j in autojump zz = "fasd_cd -d -i"; # cd with interactive selection g = "grep -in"; rm = "rm -i"; myip = "ifconfig | grep 'inet ' | grep -v 127.0.0.1 | cut -d\ -f10"; ddate = "date +%Y.%m.%d"; tdate = "date +%Y.%m.%d..%H.%M"; ttime = "date +%H.%M"; day = "date +%a"; dday = "date +%A"; gl = "git pull --prune"; glog = ''git log --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"; gd = "git diff"; gc = "git commit"; gca = "git commit -a"; gco = "git checkout"; gb = "git branch"; gs = "git status -sb"; # super handy when working with lots of repos gsdir = ''for d in */; do cd $d && echo "$d" && git status -sb ; echo ; cd .. ; done''; pull = "git pull"; ci = "git commit"; st = "git status"; fetch = "git fetch"; push = "git push"; # Two aliases for adding files. The first ignores delete files, the second # includes them. add = "git add --ignore-removal"; ga = "git add -A"; }; profileExtra = '' OLDPATH=$PATH for DIR in \ $HOME/bin \ $HOME/me/bin \ $HOME/.local/bin do if [ -d $DIR ] then PATH=$DIR:$PATH fi done ''; }; programs.emacs = { enable = true; extraPackages = epkgs: with epkgs; [ ace-window ag avy bbdb cider circe clj-refactor clojure-mode company counsel counsel-dash counsel-projectile define-word diminish dired-narrow editorconfig emojify #eww #eww-lnum git-gutter-plus git-timemachine haskell-mode #hindent-mode hlint-refactor #hoon-mode #ibuffer ibuffer-vc #indent-guide-mode ivy #link-hint # FIXME lispy magit markdown-mode multiple-cursors neotree nix-mode nix-mode org-bullets org-plus-contrib org-pomodoro org-super-agenda org-trello pass projectile racket-mode restclient s shakespeare-mode #sky-color-clock smart-mode-line solarized-theme swiper sx undo-tree wakatime-mode which-key yaml-mode yasnippet ]; }; programs.vim = { enable = true; plugins = [ "colors-solarized" "fugitive" ]; settings = { ignorecase = true; expandtab = true; history = 1000; tabstop = 4; }; extraConfig = '' " Auto-switch theme let hour = strftime("%H") if 6 <= hour && hour < 18 set background=light else set background=dark endif colorscheme solarized filetype plugin indent on set cuc cul " Crosshair set cc=80 " 80 column lines set linebreak " Break lines at word (requires Wrap lines) set showbreak=+++ " Wrap-broken line prefix set textwidth=80 " Line wrap (number of cols) set showmatch " Highlight matching brace set visualbell " Use visual bell (no beeping) set hlsearch " Highlight all search results set smartcase " Enable smart-case search set incsearch " Searches for strings incrementally ret autoindent " Auto-indent new lines set shiftwidth=4 " Number of auto-indent spaces set smartindent " Enable smart-indent set smarttab " Enable smart-tabs set ruler " Show row and column ruler information set backspace=indent,eol,start " Backspace behaviour imap fd " alternate escape set wildmenu " cool menu effect set mouse=a ''; }; programs.firefox = { enable = true; enableIcedTea = true; }; services.gpg-agent = { enable = true; defaultCacheTtl = 600; enableSshSupport = true; }; programs.home-manager.enable = true; programs.home-manager.path = https://github.com/rycee/home-manager/archive/release-18.03.tar.gz; }