{ 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"; }; 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; difftastic = { enable = true; background = "dark"; }; aliases = { ci = "commit"; lg = "log --pretty=format:\"%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) [%an]\" --abbrev-commit -30"; s = "status"; }; }; htop.enable = true; kitty = { enable = true; font = { name = "Hack"; size = 16; }; }; lazygit.enable = true; mbsync.enable = true; neovim = { enable = true; plugins = with pkgs.vimPlugins; [ vim-nix ]; }; #notmuch.enable = true; qutebrowser = import ./qutebrowser.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 = import ./tmux.nix; xmobar = { enable = true; extraConfig = builtins.readFile ./xmobarrc; }; zsh = { enable = true; enableSyntaxHighlighting = true; shellAliases = { lg = "lazygit"; vim = "nvim"; }; sessionVariables = { EDITOR = "nvim"; }; oh-my-zsh = { enable = true; plugins = [ "direnv" "git" "sudo" "vi-mode" ]; theme = "michelebologna"; # nice clean theme that shows jobs }; # michelebologna theme doesn't have an RPROMPT, but I like the one from the clean theme initExtra = '' RPROMPT='[%*]' ''; }; }; 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 = false; # 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 = false; config = import ./i3.nix pkgs; }; xmonad = { enable = true; enableContribAndExtras = true; extraPackages = haskellPackages: with haskellPackages; [ #dbus #List #monad-logger xmonad xmonad-contrib ]; config = ./xmonad.hs; }; }; }; }