dotfiles.nix/home.nix

195 lines
5.2 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{ 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
'';
};
};
};
}