dotfiles.nix/home.nix

287 lines
7.5 KiB
Nix
Raw Normal View History

2020-01-01 21:12:08 +00:00
{ pkgs, lib, ... }:
let
name = "Matthew Ess";
email = "daringseal@gmail.com";
workEmail = "mess@yelp.com";
2020-01-03 01:51:01 +00:00
lockCmd = "i3lock -i ~/.lockscreen-image";
2020-01-03 19:10:52 +00:00
niv = (import (builtins.fetchTarball {
2020-01-05 09:53:17 +00:00
url =
"https://github.com/nmattia/niv/tarball/abd0de3269fd712955d27b70e32921841c7b8bb7";
2020-01-03 06:06:04 +00:00
sha256 = "0b38n1ad00s1qqyw3ml3pypf8i1pw4aqw0bpa02qq9iv7sp3x0gz";
2020-01-03 19:10:52 +00:00
}) { }).niv;
2020-01-01 21:12:08 +00:00
in {
home = {
sessionVariables = {
EDITOR = "vim";
BROWSER = "firefox";
TERMINAL = "alacritty";
};
2020-01-01 21:12:08 +00:00
packages = with pkgs; [
# nix utilities
2020-01-03 06:06:04 +00:00
cachix
2020-01-03 19:10:52 +00:00
niv
2020-01-01 21:12:08 +00:00
nixfmt
nix-prefetch-git
# command line utilities
ag
2020-01-05 09:53:17 +00:00
fzy
2020-01-01 21:12:08 +00:00
jq
tldr
2020-01-02 04:44:48 +00:00
imagemagick
2020-01-01 21:12:08 +00:00
# graphical applications
2020-01-02 04:44:48 +00:00
alacritty
2020-01-01 21:12:08 +00:00
atom
enpass
2020-01-02 04:44:48 +00:00
firefox
2020-01-17 17:11:49 +00:00
nheko
slack
2020-01-03 06:06:04 +00:00
steam
2020-01-01 21:12:08 +00:00
# graphical utilities
clipmenu
2020-01-02 04:44:48 +00:00
clipnotify
2020-01-01 21:12:08 +00:00
dmenu
2020-01-02 06:23:41 +00:00
i3lock
2020-01-03 01:13:32 +00:00
rofi
2020-01-03 06:06:04 +00:00
xclip
2020-01-01 21:12:08 +00:00
];
file = {
2020-01-02 04:44:48 +00:00
".background-image".source = ./assets/background-image;
2020-01-03 01:51:01 +00:00
".lockscreen-image".source = ./assets/lockscreen-image;
2020-01-01 21:12:08 +00:00
".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
'';
2020-01-02 04:44:48 +00:00
".config/fish/completions/systemctl.fish".source =
./scripts/systemctl.fish;
2020-01-17 17:11:49 +00:00
".config/fish/functions/kbl.fish".source = ./scripts/kbl.fish;
2020-01-02 04:44:48 +00:00
".config/i3status/config".text = ''
# i3status configuration file.
# see "man i3status" for documentation.
# It is important that this file is edited as UTF-8.
# The following line should contain a sharp s:
# ß
# If the above line is not correctly displayed, fix your editor first!
general {
colors = true
interval = 5
}
order += "disk /"
order += "volume master"
order += "wireless _first_"
order += "battery 1"
order += "load"
order += "tztime local"
wireless _first_ {
format_up = " (%essid - %quality) %ip"
format_down = "down"
}
volume master {
format = " %volume"
format_muted = " (%volume)"
2020-01-02 06:23:41 +00:00
device = "pulse:0"
2020-01-02 04:44:48 +00:00
mixer = "Master"
mixer_idx = 0
}
battery 1 {
format = "%status %percentage %remaining"
status_bat = ""
status_chr = ""
status_full = ""
low_threshold = 30
threshold_type = percentage
integer_battery_capacity = true
color_good = "#0000FF"
path = "/sys/class/power_supply/BAT0/uevent"
}
run_watch DHCP {
pidfile = "/var/run/dhclient*.pid"
}
run_watch VPN {
pidfile = "/var/run/vpnc/pid"
}
tztime local {
format = " %h %d, %Y %I:%M:%S"
}
load {
format = " %1min"
}
disk "/" {
format = " %avail free"
}
'';
2020-01-03 01:13:32 +00:00
".config/rofi/theme.rasi".source = ./assets/arc-dark-red.rasi;
2020-01-01 21:12:08 +00:00
};
};
nixpkgs = { config.allowUnfree = true; };
programs = {
alacritty = {
enable = true;
settings = { font.normal.family = "Fira Code"; };
};
2020-01-01 21:12:08 +00:00
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
2020-01-01 21:12:08 +00:00
set VIRTUAL_ENV_DISABLE_PROMPT true
2020-01-02 04:44:48 +00:00
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 upgrade="sudo nixos-rebuild switch --upgrade"
2020-01-03 06:06:04 +00:00
alias clip="xclip -selection c"
alias cxuse="sudo cachix use -d ~/dotfiles.nix"
2020-01-05 09:53:17 +00:00
alias cxpsh="nix build -f shell.nix; nix-store -qR --include-outputs (nix-instantiate shell.nix) | cachix push"
2020-01-01 21:12:08 +00:00
'';
};
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
2020-01-03 06:06:04 +00:00
vim-nix
2020-01-01 21:12:08 +00:00
lightline-vim
2020-01-17 17:11:49 +00:00
haskell-vim
LanguageClient-neovim
2020-01-01 21:12:08 +00:00
];
extraConfig = ''
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
2020-01-05 09:53:17 +00:00
"terminal exit
tnoremap <Esc> <C-\><C-n>:q!<CR>
2020-01-01 21:12:08 +00:00
colorscheme Tomorrow-Night-Eighties
"lightline options
let g:lightline = {'colorscheme': 'jellybeans'}
2020-01-03 19:10:52 +00:00
"cursor saving
autocmd BufReadPost * if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
2020-01-01 21:12:08 +00:00
"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
2020-01-17 17:11:49 +00:00
"language server stuff
let g:LanguageClient_rootMarkers = ['*.cabal', 'stack.yaml']
let g:LanguageClient_serverCommands = {
\ 'haskell': ['ghcide', '--lsp'],
\ }
2020-01-01 21:12:08 +00:00
'';
};
2020-01-03 01:13:32 +00:00
rofi = {
enable = true;
font = "Fira Code 14";
lines = 15;
location = "center";
theme = ".config/rofi/theme";
};
2020-01-05 10:02:12 +00:00
ssh = {
enable = true;
extraOptionOverrides = {
"AddKeysToAgent" = "true";
};
};
2020-01-01 21:12:08 +00:00
starship.enable = true;
};
services = {
gnome-keyring.enable = true;
lorri.enable = true;
redshift = {
enable = true;
provider = "geoclue2";
};
screen-locker = {
enable = true;
2020-01-02 06:23:41 +00:00
lockCmd = "${lockCmd}";
2020-01-01 21:12:08 +00:00
};
};
xsession = {
enable = true;
2020-01-02 04:44:48 +00:00
scriptPath = ".hm-xsession";
2020-01-01 21:12:08 +00:00
windowManager = {
2020-01-03 01:13:32 +00:00
i3 = import ./i3.nix {
inherit lib;
inherit lockCmd;
2020-01-01 21:12:08 +00:00
};
};
};
}