{ pkgs, lib, ... }: let name = "Matthew Ess"; email = "daringseal@gmail.com"; workEmail = "mess@yelp.com"; in { home = { sessionVariables = { EDITOR = "vim"; BROWSER = "firefox"; TERMINAL = "alacritty"; }; packages = with pkgs; [ # nix utilities nixfmt nix-prefetch-git # command line utilities ag jq tldr # graphical applications atom firefox enpass termite # graphical utilities clipmenu dmenu i3lock-fancy ]; file = { ".config/fish/fishfile".text = '' laughedelic/pisces sijad/gitignore joehillen/to-fish jethrokuan/z decors/fish-colored-man franciscolourenco/done haslersn/fish-nix-completions gyakovlev/fish-fzy joseluisq/gitnow edc/bass fishpkg/fish-get fishpkg/fish-spin oh-my-fish/plugin-bang-bang fishpkg/fish-humanize-duration jorgebucaran/fish-getopts matthewess/fish-autovenv ''; ".config/fish/functions/systemctl.fish".source = ./scripts/systemctl.fish; }; }; nixpkgs = { config.allowUnfree = true; }; programs = { alacritty = { enable = true; settings = { font.normal.family = "Fira Code"; }; }; bat.enable = true; broot.enable = true; command-not-found.enable = true; direnv.enable = true; feh.enable = true; firefox.enable = true; fish = { enable = true; interactiveShellInit = '' echo 'ヽ(´ᗜ`)ノ welcome ヽ(´ᗜ`)ノ' if not functions -q fisher set -q XDG_CONFIG_HOME; or set XDG_CONFIG_HOME ~/.config curl https://git.io/fisher --create-dirs -sLo $XDG_CONFIG_HOME/fish/functions/fisher.fish fish -c fisher end fish_vi_key_bindings set VIRTUAL_ENV_DISABLE_PROMPT true ''; }; git = { enable = true; userName = "${name}"; userEmail = "${workEmail}"; ignores = [ ".*.sw[a-z]" "tags" ]; extraConfig = { color.ui = true; core.editor = "vim"; push.default = "simple"; }; }; htop = { enable = true; highlightBaseName = true; }; jq.enable = true; man.enable = true; neovim = { enable = true; viAlias = true; vimAlias = true; plugins = with pkgs.vimPlugins; [ neovim-sensible vim-fugitive vim-surround nerdtree nerdtree-git-plugin vim-colorschemes lightline-vim ]; extraConfig = '' set shell=/bin/bash set nocompatible set cursorline "highlight current line set showmatch "highlight matching [{()}] set tabstop=2 "number of visual spaces per TAB when reading set softtabstop=2 "number of spaces per TAB when editing set expandtab "tabs are spaces set shiftwidth=2 "indents cmap w!! w !sudo tee >/dev/null % set ww=<,>,[,] "wrap colorscheme Tomorrow-Night-Eighties "lightline options let g:lightline = {'colorscheme': 'jellybeans'} "view saving au BufWinLeave ?* mkview 1 au BufWinEnter ?* silent loadview 1 "nerdtree "show hidden files let NERDTreeShowHidden=1 "open on vim open autocmd vimenter * NERDTree "switch to editing window autocmd vimenter * wincmd p "close if only nerdtree is left autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif ''; }; ssh.enable = true; starship.enable = true; }; services = { gnome-keyring.enable = true; lorri.enable = true; redshift = { enable = true; provider = "geoclue2"; }; screen-locker = { enable = true; lockCmd = "i3lock-fancy"; }; }; xsession = { enable = true; windowManager = { i3 = { enable = true; config = rec { assigns = { "1: web" = [{ class = "Firefox"; }]; "2: devel" = [ { class = "Alacritty"; } { class = "Atom"; } ]; }; modifier = "Mod4"; keybindings = lib.mkOptionDefault { "${modifier}+c" = "exec CM_ONESHOT=1 clipmenud"; "${modifier}+v" = "exec clipmenu"; "${modifier}+Escape" = "exec i3lock-fancy"; "${modifier}+0" = "workspace number 0"; "${modifier}+1" = "workspace number 1"; "${modifier}+2" = "workspace number 2"; "${modifier}+3" = "workspace number 3"; "${modifier}+4" = "workspace number 4"; "${modifier}+5" = "workspace number 5"; "${modifier}+6" = "workspace number 6"; "${modifier}+7" = "workspace number 7"; "${modifier}+8" = "workspace number 8"; "${modifier}+9" = "workspace number 9"; }; workspaceLayout = "tabbed"; }; extraConfig = '' exec --no-startup-id firefox exec --no-startup-id atom exec --no-startup-id alacritty for_window [class="Firefox"] focus ''; }; }; }; }