305 lines
8.2 KiB
Nix
305 lines
8.2 KiB
Nix
{ 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;
|
||
};
|
||
};
|
||
};
|
||
}
|