{ pkgs, lib, ... }: let name = "Matthew Ess"; email = "daringseal@gmail.com"; workEmail = "mess@yelp.com"; lockCmd = "i3lock -i ~/.lockscreen-image"; statusCmd = "i3status-rs ~/.config/i3status.toml"; unstable = import { config.allowUnfree = true; }; in { home = { sessionVariables = { EDITOR = "vim"; BROWSER = "firefox"; TERMINAL = "kitty"; }; packages = with pkgs; [ # nix utilities cachix unstable.niv nixfmt nix-prefetch-git # command line utilities ag exercism fzy imagemagick jq rlwrap tldr unzip # graphical applications atom unstable.discord (dunst.override { dunstify = true; }) enpass firefox kitty nheko slack steam # graphical utilities clipmenu clipnotify dmenu i3lock unstable.i3status-rust libnotify rofi xclip ]; file = { ".background-image".source = ./assets/background-image; ".lockscreen-image".source = ./assets/lockscreen-image; ".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/completions/systemctl.fish".source = ./assets/systemctl.fish; ".config/fish/functions/colortest.fish".source = ./assets/colortest.fish; ".config/fish/functions/kbl.fish".text = '' function kbl -a level set -l initial (cat /sys/class/leds/tpacpi\:\:kbd_backlight/brightness) test -z "$level"; and set -l level $initial echo $level > /sys/class/leds/tpacpi\:\:kbd_backlight/brightness end ''; ".config/fish/functions/mkdcd.fish".text = '' function mkdcd -a target mkdir $target cd $target end ''; ".config/fish/functions/unz.fish".text = '' function unz -a target # strip extensions string match \*.zip $target; and set target (string split -r -m1 . $target)[1] unzip -d $target $target end ''; ".config/i3status.toml".source = ./assets/i3status.toml; ".config/kitty/kitty.conf".text = '' font_family Fira Code Regular bold_font Fira Code Bold font_size 15.0 ''; ".config/rofi/theme.rasi".source = ./assets/sidetab.rasi; }; }; nixpkgs = { config.allowUnfree = true; }; programs = { alacritty = { enable = false; settings = { font = { normal.family = "Fira Code"; size = 10.5; }; }; }; 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 alias cat=bat alias br=broot alias tree=br alias ack=ag alias grep=ag alias sys="sudo systemctl" alias rebuild="sudo nixos-rebuild switch" alias rebuildd="sudo nixos-rebuild switch; and systemctl restart display-manager" alias upgrade="sudo rm -rf /root/.cache/nix/tarballs; and sudo nixos-rebuild switch --upgrade" alias clip="xclip -selection c" alias cxuse="sudo cachix use -d ~/dotfiles.nix" alias cxpsh="nix build -f shell.nix; nix-store -qR --include-outputs (nix-instantiate shell.nix) | cachix push" alias home="vim ~/dotfiles.nix/home.nix +'cd %:p:h'" alias i3="vim ~/dotfiles.nix/i3.nix +'cd %:p:h'" alias vims="vim -S Session.vim" ''; }; 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 vim-nix lightline-vim haskell-vim auto-pairs vim-fish ]; extraConfig = '' syntax on filetype plugin indent on 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 set ww=<,>,[,] "wrap set splitbelow "split underneath command Mks NERDTreeClose | mksession! "save readonly cmap w!! w !sudo tee >/dev/null % "terminal exit tnoremap "nohl nnoremap , :nohlsearch colorscheme Tomorrow-Night-Eighties "lightline options let g:lightline = {'colorscheme': 'jellybeans'} "cursor saving autocmd BufReadPost * if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif "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 ''; }; rofi = { enable = true; font = "Fira Code 14"; lines = 10; location = "center"; theme = "~/.config/rofi/theme.rasi"; }; ssh = { enable = true; extraOptionOverrides = { "AddKeysToAgent" = "true"; }; }; starship.enable = true; }; services = { dunst = { enable = true; settings = { global = { geometry = "0x5-30+20"; notification_height = 25; indicate_hidden = "yes"; corner_radius = 5; padding = 10; horizontal_padding = 10; idle_threshold = 60; font = "Fira Code 16"; markup = "full"; format = '' %s %a %b''; alignment = "center"; horizontal_alignment = "center"; icon_position = "left"; separator_color = "#383838"; frame_color = "#383838"; frame_width = 2; }; shortcuts = { close = "ctrl+space"; history = "ctrl+grave"; }; urgency_low = { background = "#282828"; foreground = "#5882FA"; }; urgency_normal = { background = "#282828"; foreground = "#5882FA"; }; urgency_critical = { background = "#282828"; foreground = "#FF0040"; timeout = 0; }; }; }; gnome-keyring.enable = true; lorri.enable = true; redshift = { enable = true; provider = "geoclue2"; }; screen-locker = { enable = true; lockCmd = "${lockCmd}"; }; }; xsession = { enable = true; scriptPath = ".hm-xsession"; windowManager = { i3 = import ./i3.nix { inherit lib; inherit lockCmd; inherit statusCmd; }; }; }; }