{ pkgs, genebean-omp-themes, ... }: let sqlite_lib = if builtins.elem pkgs.system [ "aarch64-darwin" "x86_64-darwin" ] then "libsqlite3.dylib" else "libsqlite3.so"; in { home.packages = with pkgs; [ bundix cargo cheat colordiff dogdns dos2unix du-dust duf esptool fd git-filter-repo glab gomuks gotop htop httpie hub jq lazygit lua-language-server minicom mtr nil nix-zsh-completions nodejs nodePackages.npm nurl nvd onefetch powershell puppet-lint rename ruby subversion tree trippy vimv watch wget yq ]; home.sessionVariables = { CLICLOLOR = 1; PAGER = "less"; }; programs = { atuin = { enable = true; settings = { ctrl_n_shortcuts = true; # Use Ctrl-0 .. Ctrl-9 instead of Alt-0 .. Alt-9 UI shortcuts enter_accept = true; # press tab to edit command before running filter_mode_shell_up_key_binding = "host"; # or global, host, directory, etc sync_address = "https://atuin.home.technicalissues.us"; sync_frequency = "15m"; }; }; bat = { enable = true; config = { theme = "Catppuccin-frappe"; }; themes = { Catppuccin-frappe = { src = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "bat"; rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1"; hash = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw="; }; file = "Catppuccin-frappe.tmTheme"; }; }; }; bottom.enable = true; broot.enable = true; direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; }; eza.enable = true; fzf.enable = true; gh.enable = true; git = { enable = true; diff-so-fancy.enable = true; ignores = [ "*~" "*.swp" ".DS_Store" ]; includes = [ { path = "~/.gitconfig-local"; }]; lfs.enable = true; package = pkgs.gitAndTools.gitFull; userName = "Gene Liverman"; extraConfig = { init = { defaultBranch = "main"; }; merge = { conflictStyle = "diff3"; tool = "meld"; }; pull = { rebase = false; }; }; }; # end git irssi.enable = true; jq.enable = true; neovim = { enable = true; defaultEditor = true; extraLuaConfig = '' -- NOTE: This will get the OS from Lua: -- print(vim.loop.os_uname().sysname) -- setup lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" vim.opt.rtp:prepend(lazypath) -- hack to deal with bug in telescope-cheat.nvim -- https://github.com/nvim-telescope/telescope-cheat.nvim/issues/7 local cheat_dbdir = vim.fn.stdpath "data" .. "/databases" if not vim.loop.fs_stat(cheat_dbdir) then vim.loop.fs_mkdir(cheat_dbdir, 493) end -- load additional settings require("config.vim-options") require("lazy").setup("plugins") -- tell sqlite.lua where to find the bits it needs vim.g.sqlite_clib_path = '${pkgs.sqlite.out}/lib/${sqlite_lib}' ''; extraPackages = with pkgs; [ gcc # needed so treesitter can do compiling sqlite # needed by sqlite.lua used by telescope-cheat ]; plugins = [ pkgs.vimPlugins.lazy-nvim ]; # let lazy.nvim manage every other plugin }; oh-my-posh = { enable = true; enableZshIntegration = true; settings = builtins.fromJSON (builtins.unsafeDiscardStringContext (builtins.readFile (genebean-omp-themes + "/beanbag.omp.json"))); }; ripgrep.enable = true; tmux = { enable = true; historyLimit = 100000; mouse = true; tmuxinator.enable = true; plugins = with pkgs.tmuxPlugins; [ vim-tmux-navigator { plugin = dracula; extraConfig = '' set -g @dracula-show-battery false set -g @dracula-show-powerline true set -g @dracula-refresh-rate 10 ''; } ]; extraConfig = '' set -g status-position top ''; }; vim = { enable = true; defaultEditor = false; plugins = with pkgs.vimPlugins; [ syntastic tabular tlib_vim vim-addon-mw-utils vim-airline vim-airline-themes vim-flog vim-fugitive vim-json vim-markdown vim-nix vim-puppet vim-ruby vim-snipmate vim-snippets vim-tmux-navigator vim-yaml ]; settings = { background = "dark"; expandtab = true; }; extraConfig = '' set nocompatible " be iMproved, required filetype plugin indent on " required for plugins to be able to adjust indent syntax on " enable syntax highlighting set encoding=utf-8 set termencoding=utf-8 set t_Co=256 " tell vim we have 256 colors to work with set autoindent " automatically indent new lines set backspace=2 " make backspace work like most other programs set fillchars+=stl:\ ,stlnc:\ " fix added per powerline troubleshooting docs set laststatus=2 " Always display the status line in all windows set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the status line) set smarttab " helps with expanding tabs to spaces (I think) set statusline+=%{FugitiveStatusline()} " get git info via fugitive plugin set statusline+=%#warningmsg# " recommended setting from syntastic plugin set statusline+=%{SyntasticStatuslineFlag()} " recommended setting from syntastic plugin set statusline+=%* " recommended setting from syntastic plugin " This has to come after colorscheme, if defined, to not be masked highlight ColorColumn ctermbg=232 " set the color to be used for guidelines let &colorcolumn=join(range(81,999),",") " change the background color of everything beyond 80 characters let g:snipMate = { 'snippet_version' : 1 } " settings for the syntastic plugin let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 let g:syntastic_enable_signs = 1 let g:syntastic_ruby_checkers = ['rubocop'] let g:syntastic_quiet_messages = {'level': 'warnings'} " don't wrap text in markdown files let g:vim_markdown_folding_disabled = 1 " settings for vim-airline let g:airline_theme='badwolf' let g:airline_powerline_fonts = 1 ''; }; zsh = { enable = true; enableCompletion = true; enableAutosuggestions = true; history.save = 1000000; history.size = 1000000; initExtra = '' [ -f ~/.private-env ] && source ~/.private-env || echo '~/.private-env is missing' [ -f ~/.gitconfig-local ] || echo '~/.gitconfig-local is missing. Create it and set user.email' # Start GPG agent # Some tips from https://hedberg.io/yubikey-for-ssh/ helped simplify this: if [[ $(uname) == 'Darwin' ]]; then # Add GPG Suite binaries to the path: export PATH=/usr/local/MacGPG2/bin:$PATH fi export GPG_TTY=$(tty) nv() { # Assumes all configs exist in directories named ~/.config/nvim-* local config=$(fd --max-depth 1 --glob 'nvim*' ~/.config | fzf --prompt="Neovim Configs > " --height=~50% --layout=reverse --border --exit-0) # If I exit fzf without selecting a config, don't open Neovim [[ -z $config ]] && echo "No config selected" && return # Open Neovim with the selected config NVIM_APPNAME=$(basename $config) nvim $* } # unset oh-my-zsh's gk so that gk can refer to the gitkraken-cli unalias gk ''; oh-my-zsh = { enable = true; plugins = [ "bundler" "gem" "git" "github" "history" "kubectl" "pip" "terraform" "vagrant" "vscode" ]; }; shellAliases = { bcrr = "bolt command run --run-as root --sudo-password-prompt"; bcrrs = "bcrr --stream --no-verbose"; beo = "bundle exec onceover run spec --trace --force"; biv = "bundle install --path=vendor/bundle"; bottom = "echo 'To run bottom, the command is btm'"; ce = "code-exploration"; dots = "cd ~/repos/dots"; gbc = '' git branch --merged | command grep -vE "^(\*|\s*(main|master|develop|production)\s*$)" | command xargs -n 1 git branch -d ''; gitextract = "git log --pretty=email --patch-with-stat --reverse --full-index --binary --"; gpge = "gpg2 --encrypt --sign --armor -r "; hubpr = "hub pull-request --push --browse"; nvdots = "NVIM_APPNAME=nvim-dots nvim"; nve = "nvdots ~/repos/dots/modules/home-manager/files/nvim/lua"; pssh = "ssh -o 'UserKnownHostsFile /dev/null' -o 'StrictHostKeyChecking no' -o PubkeyAcceptedKeyTypes=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1 -i ~/.ssh/id_rsa-acceptance"; sal = "ssh-add -L"; st = "open -a SourceTree"; sz = "source ~/.zshrc"; trippy = "echo 'To run trippy, the command is trip'"; usegpg = "killall ssh-agent; export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) && gpgconf --launch gpg-agent"; usessh = "gpgconf --kill gpg-agent"; }; }; # end zsh }; # end programs home.file = { ".config/nvim/lua/config" = { source = ../files/nvim/lua/config; recursive = true; }; ".config/nvim/lua/plugins" = { source = ../files/nvim/lua/plugins; recursive = true; }; ".config/powershell/Microsoft.PowerShell_profile.ps1".source = ../files/Microsoft.PowerShell_profile.ps1; ".config/powershell/Microsoft.VSCode_profile.ps1".source = ../files/Microsoft.PowerShell_profile.ps1; }; }