dotfiles.nix/home.nix

332 lines
9.1 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-03-14 08:49:32 +00:00
statusCmd = "i3status-rs ~/.config/i3status.toml";
2020-01-01 21:12:08 +00:00
in {
2020-05-28 17:29:19 +00:00
nixpkgs = { config = { allowUnfree = true; }; };
2020-01-01 21:12:08 +00:00
home = {
sessionVariables = {
EDITOR = "vim";
BROWSER = "firefox";
2020-03-14 08:49:32 +00:00
TERMINAL = "kitty";
};
2020-01-01 21:12:08 +00:00
packages = with pkgs; [
# nix utilities
2020-01-03 06:06:04 +00:00
cachix
2020-05-28 17:29:19 +00:00
niv
2020-01-01 21:12:08 +00:00
nixfmt
nix-prefetch-git
# command line utilities
ag
2021-01-03 16:18:57 +00:00
bottom
2020-05-28 17:29:19 +00:00
du-dust
2020-03-14 08:49:32 +00:00
exercism
2020-01-05 09:53:17 +00:00
fzy
2021-01-03 16:18:57 +00:00
httpie
2020-01-24 21:19:15 +00:00
imagemagick
2020-01-01 21:12:08 +00:00
jq
2021-01-03 16:18:57 +00:00
pijul
procs
2020-03-14 08:49:32 +00:00
rlwrap
2021-01-03 16:18:57 +00:00
tealdeer
2020-01-24 21:19:15 +00:00
unzip
2021-01-03 16:18:57 +00:00
unrar
wireguard
2020-01-01 21:12:08 +00:00
# graphical applications
2021-01-03 16:18:57 +00:00
castor
deluge
2020-05-28 17:29:19 +00:00
discord
2020-03-14 08:49:32 +00:00
(dunst.override { dunstify = true; })
2020-01-01 21:12:08 +00:00
enpass
2020-11-15 05:08:06 +00:00
fractal
2020-01-02 04:44:48 +00:00
firefox
2020-03-14 08:49:32 +00:00
kitty
2021-01-03 16:18:57 +00:00
mullvad-vpn
2020-11-15 05:08:06 +00:00
signal-desktop
2020-01-17 17:11:49 +00:00
slack
2020-01-03 06:06:04 +00:00
steam
2021-01-03 16:18:57 +00:00
vlc
2020-11-15 05:08:06 +00:00
xfce.thunar
xfce.thunar-archive-plugin
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
2021-01-03 16:18:57 +00:00
gnome3.gnome-disk-utility
2020-01-02 06:23:41 +00:00
i3lock
2020-05-28 17:29:19 +00:00
i3status-rust
2021-01-03 16:18:57 +00:00
libappindicator
2020-03-14 08:49:32 +00:00
libnotify
2020-11-15 05:08:06 +00:00
lxappearance
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
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 =
2020-01-24 21:19:15 +00:00
./assets/systemctl.fish;
2020-05-28 17:29:19 +00:00
".config/fish/functions/colortest.fish".source = ./assets/colortest.fish;
2020-01-24 21:19:15 +00:00
".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
2020-03-14 08:49:32 +00:00
# strip extensions
string match \*.zip $target; and set target (string split -r -m1 . $target)[1]
2020-01-24 21:19:15 +00:00
unzip -d $target $target
end
'';
2020-03-14 08:49:32 +00:00
".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
2020-05-28 17:29:19 +00:00
include ./theme.conf
2020-01-02 04:44:48 +00:00
'';
2020-05-28 17:29:19 +00:00
".config/kitty/theme.conf".source = ./assets/kitty-theme.conf;
2021-01-03 16:18:57 +00:00
# ".config/nvim/init.vim".source = ./assets/init.vim;
2020-03-14 08:49:32 +00:00
".config/rofi/theme.rasi".source = ./assets/sidetab.rasi;
2020-01-01 21:12:08 +00:00
};
};
programs = {
alacritty = {
2020-03-14 08:49:32 +00:00
enable = false;
settings = {
font = {
normal.family = "Fira Code";
size = 10.5;
};
};
};
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;
2020-05-28 17:29:19 +00:00
package = pkgs.fish;
2020-01-01 21:12:08 +00:00
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"
2020-03-14 08:49:32 +00:00
alias rebuildd="sudo nixos-rebuild switch; and systemctl restart display-manager"
2021-01-03 16:18:57 +00:00
alias upgrade="sudo rm -rf /root/.cache/nix/tarballs; and sudo nix-channel --upgrade; and 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-05-28 17:29:19 +00:00
alias cxpsh="nix-shell --command exit; nix-store -qR --include-outputs (nix-instantiate shell.nix) | cachix push"
alias cxpush=cxpsh
2020-03-14 08:49:32 +00:00
alias home="vim ~/dotfiles.nix/home.nix +'cd %:p:h'"
alias i3="vim ~/dotfiles.nix/i3.nix +'cd %:p:h'"
2020-05-28 17:29:19 +00:00
alias config="vim ~/dotfiles.nix/configuration.nix +'cd %:p:h'"
2020-03-14 08:49:32 +00:00
alias vims="vim -S Session.vim"
2020-11-15 05:08:06 +00:00
alias bigscreen="xrandr --output eDP1 --off --output HDMI2 --auto"
alias smallscreen="xrandr --output eDP1 --auto --output HDMI2 --off"
2021-01-03 16:18:57 +00:00
alias pi="env TERM=xterm ssh pi@pi"
alias drop="env TERM=xterm ssh mat@drop"
alias wgup="wg-quick up wg0"
alias wgdn="wg-quick down wg0"
alias wifi="nmcli r w off; nmcli r w on"
2020-05-28 17:29:19 +00:00
bind \cr 'fzy_select_history (commandline -b)'
bind -M insert \cr 'fzy_select_history (commandline -b)'
bind \cf 'fzy_select_directory'
bind -M insert \cf 'fzy_select_directory'
bind -M insert ! __history_previous_command
bind -M insert '$' __history_previous_command_arguments
2020-01-01 21:12:08 +00:00
'';
};
git = {
enable = true;
userName = "${name}";
2020-11-15 05:08:06 +00:00
userEmail = "${email}";
2020-01-01 21:12:08 +00:00
ignores = [ ".*.sw[a-z]" "tags" ];
extraConfig = {
color.ui = true;
core.editor = "vim";
push.default = "simple";
2020-11-15 05:08:06 +00:00
init.defaultBranch = "main";
2020-01-01 21:12:08 +00:00
};
};
htop = {
enable = true;
highlightBaseName = true;
};
jq.enable = true;
man.enable = true;
neovim = {
enable = true;
viAlias = true;
vimAlias = true;
2020-05-28 17:29:19 +00:00
withNodeJs = true;
extraPython3Packages = ps: with ps; [ pynvim ];
2020-01-01 21:12:08 +00:00
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
2020-03-14 08:49:32 +00:00
auto-pairs
vim-fish
2020-05-28 17:29:19 +00:00
LanguageClient-neovim
ncm2
ncm2-path
nvim-yarp
ctrlp
dhall-vim
2020-01-01 21:12:08 +00:00
];
2020-05-28 17:29:19 +00:00
extraConfig = builtins.readFile ./assets/init.vim;
2020-01-01 21:12:08 +00:00
};
2020-01-03 01:13:32 +00:00
rofi = {
enable = true;
font = "Fira Code 14";
2020-03-14 08:49:32 +00:00
lines = 10;
2020-01-03 01:13:32 +00:00
location = "center";
2020-03-14 08:49:32 +00:00
theme = "~/.config/rofi/theme.rasi";
2020-01-03 01:13:32 +00:00
};
2020-01-05 10:02:12 +00:00
ssh = {
enable = true;
2020-03-14 08:49:32 +00:00
extraOptionOverrides = { "AddKeysToAgent" = "true"; };
2021-01-03 16:18:57 +00:00
matchBlocks = {
"drop".hostname = "104.131.174.193";
"pi".hostname = "192.168.1.165";
};
2020-01-05 10:02:12 +00:00
};
2020-01-01 21:12:08 +00:00
starship.enable = true;
2020-05-28 17:29:19 +00:00
vscode = {
enable = true;
2020-11-15 05:08:06 +00:00
package = pkgs.vscodium.overrideAttrs (_: {
preFixupPhases = [ "preFixup" ];
preFixup = ''
sed -i "s#open-vsx.org/vscode/gallery#marketplace.visualstudio.com/_apis/public/gallery#" $out/lib/vscode/resources/app/product.json
sed -i "s#open-vsx.org/vscode/item#marketplace.visualstudio.com/items#" $out/lib/vscode/resources/app/product.json
sed -i "s#open-vsx.org#marketplace.visualstudio.com#" $out/lib/vscode/resources/app/product.json
'';
});
extensions = with pkgs.vscode-extensions; [
2021-01-03 16:18:57 +00:00
matklad.rust-analyzer
# ms-python.python
2020-11-15 05:08:06 +00:00
skyapps.fish-vscode
2021-01-03 16:18:57 +00:00
vadimcn.vscode-lldb
2020-11-15 05:08:06 +00:00
];
2020-05-28 17:29:19 +00:00
};
2020-01-01 21:12:08 +00:00
};
services = {
2020-03-14 08:49:32 +00:00
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";
2020-05-28 17:29:19 +00:00
history = "ctrl+shift+grave";
2020-03-14 08:49:32 +00:00
};
urgency_low = {
background = "#282828";
foreground = "#5882FA";
};
urgency_normal = {
background = "#282828";
foreground = "#5882FA";
};
urgency_critical = {
background = "#282828";
foreground = "#FF0040";
timeout = 0;
};
};
};
2020-01-01 21:12:08 +00:00
gnome-keyring.enable = true;
lorri.enable = true;
redshift = {
enable = true;
provider = "geoclue2";
};
screen-locker = {
2020-05-28 17:29:19 +00:00
enable = false;
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-05-28 17:29:19 +00:00
i3 = import ./i3.nix { inherit lib lockCmd statusCmd; };
2021-01-03 16:18:57 +00:00
awesome = {
enable = false;
};
2020-01-01 21:12:08 +00:00
};
};
}