{ pkgs, cornelis, cornelis-vim, agda, ... }: let username = "rachel"; homeDir = "/home/${username}"; SAX2 = pkgs.fetchurl { name = "SAX2"; url = "https://abrudz.github.io/SAX2/SAX2.ttf"; sha256 = "sha256-DgvDWXO2fnKZNu9EvQOq8GNMTU3PUdp85+/0ZHdRXZc="; recursiveHash = true; downloadToTemp = true; postFetch = '' mkdir -p "$out/share/fonts/truetype" mv "$downloadedFile" "$out/share/fonts/truetype/SAX2.ttf" ''; }; in { home = { username = username; homeDirectory = homeDir; packages = with pkgs; [ unzip zip xz gzip bzip2 p7zip usbutils pciutils nettools nmap arp-scan acpi julia-bin python3 ghc firefox sxiv zathura gnupg agda discord dig xxd zoom-us slack imagemagick ffmpeg sl cowsay lolcat fortune banner yt-dlp libreoffice protonmail-bridge pass protonvpn-cli protonvpn-gui thunderbird tidal-hifi signal-desktop transmission-gtk xclip clinfo glxinfo vulkan-tools obs-studio file gimp SAX2 twemoji-color-font bat steam steam-run rmapi lutris texlive.combined.scheme-full cornelis ]; stateVersion = "23.05"; }; xdg.userDirs = { enable = true; createDirectories = true; desktop = "${homeDir}"; documents = "${homeDir}/doc"; download = "${homeDir}/dwn"; music = "${homeDir}/music"; pictures = "${homeDir}/img"; publicShare = "${homeDir}/srv"; templates = "${homeDir}/doc/templates"; videos = "${homeDir}/vid"; }; programs = { bash = { enable = true; enableCompletion = true; historyFile = "/dev/null"; sessionVariables = { PS1 ="\\033[1m\\u\\033[0m@\\033[1m\\h\\033[0m: \\w\nλ "; BROWSER = "firefox"; XINITRC = "${homeDir}/bin/xinitrc"; XAUTHORITY = "${homeDir}/.local/share/Xauthority"; PASH_KEYID = "3E4A909C8FEF6E3783699C79DFC26EF8EDAD6D71"; QT_AUTO_SCREEN_FACTOR = 1; PATH = "${homeDir}/bin:$PATH"; }; shellAliases = { x = "startx"; rm = "rm -i"; cal = "cal -m"; }; initExtra = '' source ~/.profile set -o vi ''; }; mpv = { enable = true; config = { hwdec = "auto-safe"; vo = "gpu"; profile = "gpu-hq"; }; }; rofi = { enable = true; theme = "solarized"; }; emacs = { enable = true; package = pkgs.emacs-gtk; extraPackages = epkgs: with epkgs; with melpaStablePackages; [ nix-mode rust-mode pdf-tools dune tuareg idris-mode multi-vterm org-superstar org-fragtog visual-fill writeroom-mode solarized-theme doom-modeline all-the-icons-dired page-break-lines all-the-icons dashboard vterm undo-fu latex-math-preview haskell-mode evil-surround evil-org evil-commentary evil ]; }; git = { enable = true; userName = "Rachel Lambda Samuelsson"; userEmail = "depsterr@protonmail.com"; extraConfig = { init.defaultBranch = "master"; }; }; neovim = { defaultEditor = true; enable = true; vimAlias = true; extraLuaConfig = '' require("tmux").setup({ copy_sync = { redirect_to_clipboard = true } }); require('Comment').setup() ''; extraConfig = '' set rnu nu set ts=2 sw=2 expandtab set clipboard=unnamedplus set laststatus=3 noshowmode let g:cornelis_use_global_binary = 1 let g:lightline = { 'colorscheme': 'gruvbox' } colorscheme gruvbox hi Normal guibg=NONE ctermbg=NONE au BufRead,BufNewFile *.agda call AgdaFiletype() au BufRead,BufNewFile *.lagda.* call AgdaFiletype() function! AgdaFiletype() nnoremap :CornelisLoad nnoremap :CornelisRefine nnoremap :CornelisMakeCase nnoremap , :CornelisTypeContext nnoremap . :CornelisTypeContextInfer nnoremap :CornelisTypeInfer nnoremap :CornelisSolve nnoremap :CornelisAuto nnoremap gd :CornelisGoToDefinition nnoremap :CornelisPrevGoal nnoremap :CornelisNextGoal nnoremap :CornelisIgnoreAbstract nnoremap :CornelisGive endfunction ''; plugins = with pkgs.vimPlugins; [ surround-nvim comment-nvim vimtex gruvbox-nvim lightline-vim lightline-gruvbox-vim tmux-nvim cornelis-vim ]; }; tmux = { enable = true; clock24 = true; escapeTime = 0; keyMode = "vi"; mouse = false; shortcut = "a"; extraConfig = '' bind h split -hb -c '#{pane_current_path}' bind j split -v -c '#{pane_current_path}' bind k split -vb -c '#{pane_current_path}' bind l split -h -c '#{pane_current_path}' is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?\.?(view|n?vim?x?)(-wrapped)?(diff)?$'" bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' bind-key -T copy-mode-vi 'C-h' select-pane -L bind-key -T copy-mode-vi 'C-j' select-pane -D bind-key -T copy-mode-vi 'C-k' select-pane -U bind-key -T copy-mode-vi 'C-l' select-pane -R bind -n 'M-h' if-shell "$is_vim" 'send-keys M-h' 'resize-pane -L 1' bind -n 'M-j' if-shell "$is_vim" 'send-keys M-j' 'resize-pane -D 1' bind -n 'M-k' if-shell "$is_vim" 'send-keys M-k' 'resize-pane -U 1' bind -n 'M-l' if-shell "$is_vim" 'send-keys M-l' 'resize-pane -R 1' bind-key -T copy-mode-vi M-h resize-pane -L 1 bind-key -T copy-mode-vi M-j resize-pane -D 1 bind-key -T copy-mode-vi M-k resize-pane -U 1 bind-key -T copy-mode-vi M-l resize-pane -R 1 set -g pane-border-style bg=default set -g pane-border-style fg="#1D1F21" set -g pane-active-border-style bg=default set -g pane-active-border-style fg="#333333" set-option -g status on set-option -g status-style bg=default set-option -g status-style fg="#ef7627" set-option -g status-interval 2 set-option -g status-justify "centre" set-option -g status-right " λ " set -g status-interval 1 set-window-option -g window-status-separator "-" set-window-option -g window-status-current-format " #[fg=#b55690 bold]!![ #{b:pane_current_path}/ ] #{b:window_index} $ #{b:pane_current_command}!! " set-window-option -g window-status-format " #{b:window_index} [ #{b:pane_current_path}/ ] #{b:pane_current_command} " ''; }; hyfetch = { enable = true; settings = { preset = "lesbian"; mode = "rgb"; color_align = { mode = "horizontal"; }; }; }; alacritty = { enable = true; settings = { window = { padding.x = 5; padding.y = 5; decoration = "none"; }; dynamic_title = false; mouse_hide_when_typing = true; draw_bold_text_with_bright_colors = false; scrolling.history = 0; font = { normal.family = "SAX2"; size = 11; }; colors = { background = "#1d1f21"; foreground = "#c5c8c6"; }; shell.program = let tmux-menu = pkgs.writeScript "tmux-menu" '' s="$(tmux ls 2>/dev/null)" [ "$s" ] && s="$s " c=$(${pkgs.fzf}/bin/fzf -1 <<-EOF ''${s}New Session Raw Shell EOF ) || exit case "$c" in "New Session") read -p "Name? " -r n ${pkgs.tmux}/bin/tmux new -s "$n" ;; "Raw Shell") ${pkgs.bash}/bin/bash ;; *) ${pkgs.tmux}/bin/tmux attach-session -t "''${c%%:*}" ;; esac ''; in "${tmux-menu}"; }; }; }; }