dotfiles.nix/home.nix

305 lines
8.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";
lockCmd = "i3lock -i ~/.lockscreen-image";
statusCmd = "i3status-rs ~/.config/i3status.toml";
unstable = import <nixos-unstable> { 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 <Esc> <C-\><C-n><CR>
"nohl
nnoremap <silent> ,<space> :nohlsearch<CR>
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 = ''
<b>%s<b> %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;
};
};
};
}