nix_config/home/jacob.nix

237 lines
5.4 KiB
Nix

{ config, pkgs, ... }:
{
imports = [
({ lib, ...}: {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"zoom"
];
})
];
# Home Manager needs a bit of information about you and the
# paths it should manage.
home = {
username = "jacob";
homeDirectory = "/home/jacob";
keyboard = {
layout = "us";
options = [ "caps:swapescape" "ctrl:ralt_rctrl" ];
};
packages = with pkgs; [
age
bitwarden
chromium
feh
file
#freecad
#gnumake
hack-font
inconsolata
libreoffice
logseq
mupdf
#nyxt
#openscad
#pandoc
pavucontrol
scli
scrot
signal-desktop
sops
spotify-tui
sxiv
#texlive.combined.scheme-full
xclip
zoom-us
];
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
stateVersion = "22.05";
};
accounts.email = {
accounts.gmail = {
address = "jacob.hinkle@gmail.com";
passwordCommand = "${pkgs.coreutils}/bin/cat /run/secrets/email/gmail/password";
flavor = "gmail.com";
mbsync = {
enable = false;
create = "maildir";
};
notmuch.enable = false;
primary = true;
realName = "Jacob Hinkle";
};
accounts.jhink = {
address = "jacob.hinkle@jhink.org";
imap.host = "mail.privateemail.com";
smtp.host = "mail.privateemail.com";
flavor = "plain";
userName = "jacob.hinkle@jhink.org";
passwordCommand = "${pkgs.coreutils}/bin/cat /run/secrets/email/jhink/password";
mbsync = {
enable = true;
create = "maildir";
};
notmuch.enable = true;
realName = "Jacob Hinkle";
};
};
programs = {
bat = {
enable = true;
};
direnv = {
enable = true;
enableZshIntegration = true;
};
firefox = {
enable = true;
package = pkgs.firefox.override {
cfg = {
enableTridactylNative = true;
};
};
};
git = {
enable = true;
userName = "Jacob Hinkle";
userEmail = "jacob.hinkle@jhink.org";
lfs.enable = true;
delta.enable = true;
};
htop = {
enable = true;
};
kitty = {
enable = true;
font = {
name = "Hack";
size = 26;
};
};
mbsync = {
enable = true;
};
neovim = {
enable = true;
plugins = with pkgs.vimPlugins; [
vim-nix
];
};
rbw = {
enable = true;
settings.email = "jacob.hinkle@gmail.com";
};
ssh = {
enable = true;
matchBlocks = {
login1 = {
hostname = "login1.ornl.gov";
user = "4jh";
};
lucky = {
hostname = "lucky.ornl.gov";
user = "4jh";
proxyJump = "login1";
};
murdock = {
hostname = "murdock.ornl.gov";
user = "4jh";
proxyJump = "login1";
};
};
};
tmux = {
enable = true;
aggressiveResize = true;
clock24 = true;
escapeTime = 0;
historyLimit = 10000;
keyMode = "vi";
shortcut = "a";
terminal = "kitty";
extraConfig = ''
unbind [
bind Escape copy-mode
bind f set-option status
bind c new-window -c "#{pane_current_path}"
# Set status bar
set -g status-position bottom
set -g status-style fg=white
set -g status-left '#[fg=green]#(who -s | awk "{ print \$1}" | sort -u | grep -v 4jh | xargs echo) #[fg=black,bright]#H'
# TODO: highlighted for nested local session as well
wg_is_keys_off="#[fg=red,bright]#([ $(tmux show-option -qv key-table) = 'off' ] && echo 'PASSTHRU')#[default]"
set -g status-right "#[fg=yellow,bright]#S $wg_is_keys_off #[fg=green,dim]%H:%M"
set-window-option -g window-status-current-style fg=red
# align center the window list
set -g status-justify centre
'';
};
zsh = {
enable = true;
enableSyntaxHighlighting = true;
shellAliases = {
vim = "nvim";
};
sessionVariables = {
EDITOR = "nvim";
};
oh-my-zsh = {
enable = true;
plugins = [
"git" "sudo" "vi-mode"
];
theme = "clean";
};
};
};
services = {
spotifyd = {
enable = true;
settings = {
global = {
username_cmd = "${pkgs.coreutils}/bin/cat /run/secrets/spotify/username";
password_cmd = "${pkgs.coreutils}/bin/cat /run/secrets/spotify/password";
backend = "pulseaudio";
device = "pipewire";
device_name = "pedro";
device_type = "computer";
};
};
};
syncthing = {
enable = true;
# cause the tray command to wait for the service and tray manager to start
#extraOptions = [ "--wait" ];
tray.enable = false;
};
unclutter = {
enable = true;
};
};
xsession = {
enable = true;
windowManager.i3 = {
enable = true;
config = import ./i3.nix pkgs;
};
};
}