The general configuration of my development environment and many other general computer things.

Compare changes

Choose any two refs to compare.

+6
.chezmoiexternal.toml
···
··· 1 + [".cache/nu_scripts"] 2 + type = "archive" 3 + url = "https://github.com/nushell/nu_scripts/archive/refs/heads/main.tar.gz" 4 + exact = true 5 + stripComponents = 1 6 + refreshPeriod = "168h"
+1
.chezmoiignore
···
··· 1 + Brewfile
-1
.gitignore
··· 1 - result
···
+103
Brewfile
···
··· 1 + tap "dekker1/minizinc", "git@github.com:Dekker1/homebrew-minizinc.git" 2 + tap "homebrew/bundle" 3 + tap "homebrew/cask" 4 + tap "homebrew/cask-fonts" 5 + tap "homebrew/core" 6 + tap "homebrew/services" 7 + tap "koekeishiya/formulae" 8 + brew "bat" 9 + brew "bison" 10 + brew "black" 11 + brew "ccache" 12 + brew "chezmoi" 13 + brew "cmake" 14 + brew "exa" 15 + brew "fd" 16 + brew "flex" 17 + brew "fzf" 18 + brew "gecode" 19 + brew "gnupg" 20 + brew "go" 21 + brew "hugo" 22 + brew "hut" 23 + brew "llvm" 24 + brew "ltex-ls" 25 + brew "mas" 26 + brew "mdbook" 27 + brew "neovim" 28 + brew "ninja" 29 + brew "node" 30 + brew "nushell" 31 + brew "or-tools" 32 + brew "pandoc" 33 + brew "pinentry-mac" 34 + brew "pipx" 35 + brew "poetry" 36 + brew "prettier" 37 + brew "python@3.9" 38 + brew "ripgrep" 39 + brew "rustup-init" 40 + brew "scip" 41 + brew "starship" 42 + brew "tectonic" 43 + brew "texlab" 44 + brew "topgrade" 45 + brew "typst" 46 + brew "xonsh" 47 + brew "zoxide" 48 + brew "zplug" 49 + brew "dekker1/minizinc/choco" 50 + brew "dekker1/minizinc/chuffed" 51 + brew "dekker1/minizinc/flatzingo" 52 + brew "dekker1/minizinc/fzn-oscar-cbls" 53 + brew "dekker1/minizinc/fzn-picat" 54 + brew "dekker1/minizinc/geas" 55 + brew "dekker1/minizinc/jacop" 56 + brew "dekker1/minizinc/open-wbo" 57 + brew "dekker1/minizinc/yuck" 58 + brew "koekeishiya/formulae/skhd" 59 + brew "koekeishiya/formulae/yabai" 60 + cask "alfred" 61 + cask "calibre" 62 + cask "chromium" 63 + cask "discord" 64 + cask "docker" 65 + cask "firefox" 66 + cask "fleet" 67 + cask "font-atkinson-hyperlegible" 68 + cask "font-ibm-plex" 69 + cask "font-iosevka" 70 + cask "font-iosevka-slab" 71 + cask "font-playfair-display" 72 + cask "kitty" 73 + cask "mactex-no-gui" 74 + cask "minizincide" 75 + cask "mirrorop" 76 + cask "multipass" 77 + cask "notion" 78 + cask "signal" 79 + cask "skim" 80 + cask "sublime-merge" 81 + cask "sublime-text" 82 + cask "vscodium" 83 + cask "zoom" 84 + cask "zotero" 85 + cask "zulip" 86 + mas "1Password for Safari", id: 1569813296 87 + mas "Baking Soda", id: 1601151613 88 + mas "Kagi Inc.", id: 1622835804 89 + mas "Keynote", id: 409183694 90 + mas "Microsoft Excel", id: 462058435 91 + mas "Microsoft Word", id: 462054704 92 + mas "Numbers", id: 409203825 93 + mas "Pages", id: 409201541 94 + mas "Pixelmator Pro", id: 1289583905 95 + mas "Qantas", id: 1468230799 96 + mas "Slack", id: 803453959 97 + mas "Textual IRC Client", id: 1262957439 98 + mas "The Unarchiver", id: 425424353 99 + mas "Things", id: 904280696 100 + mas "Userscripts-Mac-App", id: 1463298887 101 + mas "Vinegar", id: 1591303229 102 + mas "WhatsApp", id: 1147396723 103 + mas "Wipr", id: 1320666476
-9
GhosttyNewWindow.scpt
··· 1 - tell application "Ghostty" 2 - if it is running then 3 - activate 4 - delay 0.05 5 - tell application "System Events" to keystroke "n" using {command down} 6 - else 7 - activate 8 - end if 9 - end tell
···
-23
darwin/casks.nix
··· 1 - {}: 2 - [ 3 - # Development Tools 4 - "ghostty" 5 - "minizincide" 6 - "sublime-merge" 7 - "vscodium" 8 - "zed" 9 - 10 - # Communication Tools 11 - "beeper" 12 - "zoom" 13 - 14 - # Utility Tools 15 - "languagetool-desktop" 16 - "skim" 17 - 18 - # Productivity Tools 19 - "1password-cli" 20 - 21 - # Browsers 22 - "zen" 23 - ]
···
-50
darwin/config/skhdrc
··· 1 - # Open applications 2 - alt - return : open "warp://action/new_window?path=$HOME" 3 - # alt - return : /Users/dekker1/.nix-profile/bin/kitty --single-instance -d ~ 4 - 5 - # Focus display 6 - alt - tab : yabai -m display --focus recent 7 - 8 - # Focus window 9 - alt - h : yabai -m window --focus west 10 - alt - j : yabai -m window --focus south 11 - alt - k : yabai -m window --focus north 12 - alt - l : yabai -m window --focus east 13 - 14 - alt - left : yabai -m window --focus west 15 - alt - down : yabai -m window --focus south 16 - alt - up : yabai -m window --focus north 17 - alt - right : yabai -m window --focus east 18 - 19 - # Swap window 20 - shift + alt - h : yabai -m window --swap west 21 - shift + alt - j : yabai -m window --swap south 22 - shift + alt - k : yabai -m window --swap north 23 - shift + alt - l : yabai -m window --swap east 24 - 25 - shift + alt - left : yabai -m window --swap west 26 - shift + alt - down : yabai -m window --swap south 27 - shift + alt - up : yabai -m window --swap north 28 - shift + alt - right : yabai -m window --swap east 29 - 30 - # Move focus container to workspace 31 - shift + alt - 1 : yabai -m window --space 1; yabai -m space --focus 1 32 - shift + alt - 2 : yabai -m window --space 2; yabai -m space --focus 2 33 - shift + alt - 3 : yabai -m window --space 3; yabai -m space --focus 3 34 - shift + alt - 4 : yabai -m window --space 4; yabai -m space --focus 4 35 - shift + alt - 5 : yabai -m window --space 5; yabai -m space --focus 5 36 - shift + alt - 6 : yabai -m window --space 6; yabai -m space --focus 6 37 - shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7 38 - shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8 39 - shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9 40 - shift + alt - 0 : yabai -m window --space 0; yabai -m space --focus 0 41 - 42 - # Enable / Disable gaps in current workspace 43 - lctrl + alt - g : yabai -m space --toggle padding; yabai -m space --toggle gap 44 - 45 - # Float / Unfloat window 46 - shift + alt - space : yabai -m window --toggle float; 47 - 48 - # Make window native fullscreen 49 - alt - f : yabai -m window --toggle zoom-fullscreen 50 - shift + alt - f : yabai -m window --toggle native-fullscreen
···
-20
darwin/config/yabairc
··· 1 - yabai -m config layout bsp 2 - yabai -m config top_padding 4 3 - yabai -m config bottom_padding 4 4 - yabai -m config left_padding 4 5 - yabai -m config right_padding 4 6 - yabai -m config window_gap 4 7 - 8 - yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off 9 - yabai -m rule --add label="Activity Monitor" app="^Activity Monitor$" manage=off 10 - yabai -m rule --add label="App Store" app="^App Store$" manage=off 11 - yabai -m rule --add label="Calculator" app="^Calculator$" manage=off 12 - yabai -m rule --add label="Dictionary" app="^Dictionary$" manage=off 13 - yabai -m rule --add label="Digital Colour Meter" app="^Digital Colou?r Meter$" sticky=on 14 - yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off 15 - yabai -m rule --add label="Fork" app="^Fork$" manage=off sticky=on 16 - yabai -m rule --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off 17 - yabai -m rule --add label="Software Update" title="Software Update" manage=off 18 - yabai -m rule --add label="Sublime Merge" app="^Sublime Merge$" manage=off sticky=on 19 - yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off 20 - yabai -m rule --add label="Tweetbot" app="^Tweetbot$" title=".*" manage=off
···
-150
darwin/default.nix
··· 1 - { pkgs, user, ... }: 2 - { 3 - imports = [ 4 - ./home-manager.nix 5 - ../shared 6 - ../shared/cachix 7 - ]; 8 - 9 - # Setup user, packages, programs 10 - nix = { 11 - package = pkgs.nix; 12 - settings.trusted-users = [ "@admin" "${user}" ]; 13 - 14 - gc = { 15 - automatic = true; 16 - interval = { Weekday = 0; Hour = 2; Minute = 0; }; 17 - options = "--delete-older-than 30d"; 18 - }; 19 - 20 - # Turn this on to make command line easier 21 - extraOptions = '' 22 - experimental-features = nix-command flakes 23 - ''; 24 - }; 25 - 26 - # Turn off NIX_PATH warnings now that we're using flakes 27 - system.checks.verifyNixPath = false; 28 - 29 - 30 - # Load configuration that is shared across systems 31 - environment.systemPackages = import ../shared/packages.nix { inherit pkgs; } ++ [ 32 - # MacOS specific packages 33 - ]; 34 - 35 - fonts.packages = import ../shared/fonts.nix { inherit pkgs; }; 36 - 37 - users.users.${user} = { 38 - packages = import ../shared/packages.nix { inherit pkgs; } ++ [ 39 - # MacOS specific packages 40 - ]; 41 - }; 42 - 43 - # Setup MacOS specific services 44 - services = { 45 - aerospace = { 46 - enable = true; 47 - settings = { 48 - mode.main.binding = { 49 - # Open a new terminal window 50 - alt-enter = "exec-and-forget osascript ~/nix-config/GhosttyNewWindow.scpt"; 51 - # alt-enter = "exec-and-forget open \"warp://action/new_window?path=$HOME\""; 52 - # Toggle between floating and tiling layout 53 - alt-shift-space = "layout floating tiling"; 54 - 55 - ### Key mappings copied from the default config 56 - # See: https://nikitabobko.github.io/AeroSpace/commands#layout 57 - alt-slash = "layout tiles horizontal vertical"; 58 - alt-comma = "layout accordion horizontal vertical"; 59 - 60 - # See: https://nikitabobko.github.io/AeroSpace/commands#focus 61 - alt-h = "focus left"; 62 - alt-j = "focus down"; 63 - alt-k = "focus up"; 64 - alt-l = "focus right"; 65 - 66 - # See: https://nikitabobko.github.io/AeroSpace/commands#move 67 - alt-shift-h = "move left"; 68 - alt-shift-j = "move down"; 69 - alt-shift-k = "move up"; 70 - alt-shift-l = "move right"; 71 - 72 - # See: https://nikitabobko.github.io/AeroSpace/commands#resize 73 - alt-shift-minus = "resize smart -50"; 74 - alt-shift-equal = "resize smart +50"; 75 - 76 - # See: https://nikitabobko.github.io/AeroSpace/commands#workspace 77 - alt-1 = "workspace 1"; 78 - alt-2 = "workspace 2"; 79 - alt-3 = "workspace 3"; 80 - alt-4 = "workspace 4"; 81 - alt-5 = "workspace 5"; 82 - alt-6 = "workspace 6"; 83 - alt-7 = "workspace 7"; 84 - alt-8 = "workspace 8"; 85 - alt-9 = "workspace 9"; 86 - 87 - # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace 88 - alt-shift-1 = "move-node-to-workspace 1"; 89 - alt-shift-2 = "move-node-to-workspace 2"; 90 - alt-shift-3 = "move-node-to-workspace 3"; 91 - alt-shift-4 = "move-node-to-workspace 4"; 92 - alt-shift-5 = "move-node-to-workspace 5"; 93 - alt-shift-6 = "move-node-to-workspace 6"; 94 - alt-shift-7 = "move-node-to-workspace 7"; 95 - alt-shift-8 = "move-node-to-workspace 8"; 96 - alt-shift-9 = "move-node-to-workspace 9"; 97 - 98 - # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth 99 - # alt-tab = "workspace-back-and-forth"; 100 - # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor 101 - alt-shift-tab = "move-workspace-to-monitor --wrap-around next"; 102 - 103 - # See: https://nikitabobko.github.io/AeroSpace/commands#mode 104 - alt-shift-semicolon = "mode service"; 105 - }; 106 - ### Service mode (from default config, with default keybindings) 107 - mode.service.binding = { 108 - esc = ["reload-config" "mode main"]; 109 - r = ["flatten-workspace-tree" "mode main"]; # reset layout 110 - f = ["layout floating tiling" "mode main"]; # Toggle between floating and tiling layout 111 - backspace = ["close-all-windows-but-current" "mode main"]; 112 - 113 - # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 114 - #s = ["layout sticky tiling", "mode main"] 115 - 116 - alt-shift-h = ["join-with left" "mode main"]; 117 - alt-shift-j = ["join-with down" "mode main"]; 118 - alt-shift-k = ["join-with up" "mode main"]; 119 - alt-shift-l = ["join-with right" "mode main"]; 120 - 121 - ## Version 0.16+ 122 - # down = "volume down"; 123 - # up = "volume up"; 124 - # shift-down = ["volume set 0" "mode main"]; 125 - }; 126 - # on-window-detected = [ 127 - # # Use floating mode for Sublime Merge 128 - # { 129 - # "if.app-id" = "com.sublimemerge"; 130 - # run = "layout floating"; 131 - # } 132 - # ]; 133 - 134 - }; 135 - }; 136 - 137 - skhd = { 138 - enable = false; 139 - skhdConfig = (builtins.readFile ./config/skhdrc); 140 - }; 141 - 142 - yabai = { 143 - enable = false; 144 - extraConfig = (builtins.readFile ./config/yabairc); 145 - }; 146 - }; 147 - 148 - system.stateVersion = 5; 149 - system.primaryUser = "${user}"; 150 - }
···
-90
darwin/home-manager.nix
··· 1 - { email, name, pkgs, sshSignKey, user, ... }: 2 - { 3 - # It me 4 - users.users.${user} = { 5 - name = "${user}"; 6 - home = "/Users/${user}"; 7 - isHidden = false; 8 - shell = pkgs.zsh; 9 - }; 10 - 11 - homebrew = { 12 - enable = true; 13 - onActivation = { 14 - autoUpdate = true; 15 - upgrade = true; 16 - cleanup = "zap"; 17 - }; 18 - casks = pkgs.callPackage ./casks.nix { }; 19 - brews = [ 20 - "openssl" # Required by cargo-update (`LDFLAGS="-L/usr/local/opt/openssl@3/lib" CPPFLAGS="-I/usr/local/opt/openssl@3/include" cargo install cargo-update`) 21 - 22 - # MiniZinc solvers 23 - "dekker1/minizinc/choco" 24 - "dekker1/minizinc/flatzingo" 25 - "dekker1/minizinc/geas" 26 - # "dekker1/minizinc/jacop" 27 - "dekker1/minizinc/fzn-oscar-cbls" 28 - "dekker1/minizinc/fzn-picat" 29 - "dekker1/minizinc/pumpkin" 30 - "dekker1/minizinc/yuck" 31 - "scip" 32 - ]; 33 - taps = [ 34 - "dekker1/minizinc" 35 - ]; 36 - 37 - # These app IDs are from using the mas CLI app 38 - # mas = mac app store 39 - # https://github.com/mas-cli/mas 40 - # 41 - # $ nix shell nixpkgs#mas 42 - # $ mas search <app name> 43 - # 44 - masApps = { 45 - "1Password for Safari" = 1569813296; 46 - "Baking Soda" = 1601151613; 47 - "Keynote" = 409183694; 48 - "Numbers" = 409203825; 49 - "Pages" = 409201541; 50 - "Pixelmator Pro" = 1289583905; 51 - # "Textual IRC Client" = 1262957439; 52 - "The Unarchiver" = 425424353; 53 - "Userscripts-Mac-App" = 1463298887; 54 - "Vinegar" = 1591303229; 55 - "Wipr" = 1320666476; 56 - }; 57 - }; 58 - 59 - # Enable home-manager 60 - home-manager = { 61 - useGlobalPkgs = true; 62 - users.${user} = { pkgs, config, lib, ... }: { 63 - home = { 64 - enableNixpkgsReleaseCheck = false; 65 - stateVersion = "21.11"; 66 - sessionPath = [ 67 - "$HOME/.local/bin" 68 - "$HOME/.cargo/bin" 69 - ]; 70 - }; 71 - programs = lib.attrsets.recursiveUpdate (import ../shared/home-manager.nix { 72 - inherit config email lib name pkgs sshSignKey user; 73 - }) { 74 - # MacOS specific home-manager program settings 75 - git.extraConfig.gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; 76 - jujutsu.settings.signing.backends.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; 77 - 78 - skim.enable = true; 79 - 80 - zsh.initContent = '' 81 - if [[ $(uname -m) == 'arm64' ]]; then 82 - eval "$(/opt/homebrew/bin/brew shellenv)" 83 - fi 84 - ''; 85 - 86 - ssh.matchBlocks."*".extraOptions."UseKeychain" = "yes"; 87 - }; 88 - }; 89 - }; 90 - }
···
+2
dot_config/bat/config
···
··· 1 + # Use github theme for bat 2 + --theme="ansi"
+3
dot_config/chezmoi/chezmoi.toml
···
··· 1 + [edit] 2 + command = "codium" 3 + args = ["--wait"]
+17
dot_config/kitty/kitty.conf
···
··· 1 + font_family Iosevka Term 2 + bold_font auto 3 + italic_font auto 4 + bold_italic_font auto 5 + 6 + cursor_shape underline 7 + 8 + font_size 14.0 9 + 10 + confirm_os_window_close 0 11 + 12 + shell nu 13 + 14 + # BEGIN_KITTY_THEME 15 + # Catppuccin-Latte 16 + include current-theme.conf 17 + # END_KITTY_THEME
+21
dot_config/kitty/themes/breakers.conf
···
··· 1 + background #fcfdfd 2 + foreground #333333 3 + cursor #5fb4b4 4 + selection_background #d8dcdf 5 + selection_foreground #f8f8f8 6 + color0 #333333 7 + color8 #333333 8 + color1 #ec5f66 9 + color9 #f97b58 10 + color2 #80b979 11 + color10 #80b979 12 + color3 #f9ae58 13 + color11 #fac761 14 + color4 #6699cc 15 + color12 #6699cc 16 + color5 #c695c6 17 + color13 #c695c6 18 + color6 #5c99d6 19 + color14 #5c99d6 20 + color7 #999999 21 + color15 #999999
+21
dot_config/kitty/themes/mariana.conf
···
··· 1 + background #303841 2 + foreground #d8dee9 3 + cursor #f9ae58 4 + selection_background #596673 5 + selection_foreground #f8f8f8 6 + color0 #000000 7 + color8 #000000 8 + color1 #ec5f66 9 + color9 #f97b58 10 + color2 #99c794 11 + color10 #99c794 12 + color3 #f9ae58 13 + color11 #ee932b 14 + color4 #6699cc 15 + color12 #6699cc 16 + color5 #c695c6 17 + color13 #c695c6 18 + color6 #5c99d6 19 + color14 #5c99d6 20 + color7 #ffffff 21 + color15 #f7f7f7
+3
dot_config/nvim/ftdetect/zinc.vim
···
··· 1 + autocmd BufNewFile,BufRead *.mzn set filetype=zinc 2 + autocmd BufNewFile,BufRead *.fzn set filetype=zinc 3 + autocmd BufNewFile,BufRead *.dzn set filetype=zinc
+113
dot_config/nvim/init.lua
···
··· 1 + local fn = vim.fn 2 + local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' 3 + if fn.empty(fn.glob(install_path)) > 0 then 4 + packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) 5 + end 6 + 7 + ---- Set general neovim options ---- 8 + require 'options' 9 + 10 + ---- Load and configure plugins using Packer 11 + return require('packer').startup(function(use) 12 + local use = require('packer').use 13 + -- Package manager (Self update) 14 + use 'wbthomason/packer.nvim' 15 + -- General Editing 16 + use { 17 + 'numToStr/Comment.nvim', -- 'gc' to comment visual regions/lines 18 + config = function() 19 + require('Comment').setup() 20 + end 21 + } 22 + use { 23 + 'Konfekt/vim-sentence-chopper', -- 'gw' to split using sentences 24 + config = function() vim.g.latexindent = false end, -- "gw" should not use latexindent 25 + } 26 + -- Appearance 27 + use { 28 + 'SmiteshP/nvim-gps', -- Status line 29 + requires = 'nvim-treesitter/nvim-treesitter', 30 + config = function() require("nvim-gps").setup({ 31 + disable_icons = true, 32 + depth = 3, 33 + }) end, 34 + } 35 + use { 36 + 'nvim-lualine/lualine.nvim', -- Status line 37 + requires = 'SmiteshP/nvim-gps', 38 + } 39 + use { 40 + 'cormacrelf/dark-notify', -- Automatic theme switching 41 + requires = { 42 + 'rose-pine/neovim', -- Theme 43 + 'nvim-lualine/lualine.nvim', 44 + }, 45 + config = require('plugins.appearance').conf_theme, 46 + } 47 + use { 48 + 'lukas-reineke/indent-blankline.nvim', -- Add indentation guides even on blank lines 49 + config = require('plugins.appearance').conf_indent, 50 + } 51 + use { 52 + 'folke/which-key.nvim', -- Show key mappings 53 + config = function() require('plugins.keymap') end, 54 + } 55 + use { 56 + 'beauwilliams/focus.nvim', 57 + config = function() require("focus").setup() end, 58 + } 59 + -- Language configuration 60 + use { 61 + 'nvim-treesitter/nvim-treesitter', 62 + run = ':TSUpdate', 63 + config = require('plugins.appearance').conf_treesitter, 64 + } 65 + use { 66 + 'neovim/nvim-lspconfig', -- Configuration of LSP 67 + requires = 'nvim-treesitter/nvim-treesitter', 68 + config = function() 69 + require('lang.c++') 70 + require('lang.go') 71 + require('lang.python') 72 + require('lang.rust') 73 + require('lang.svelte') 74 + require('lang.tex') 75 + require('lang.yaml') 76 + require('lang.zinc') 77 + end, 78 + } 79 + use { 80 + 'mfussenegger/nvim-dap', 81 + config = require('lang.debug').conf_debug, 82 + } 83 + use { 84 + 'pianocomposer321/yabs.nvim', -- Build System 85 + config = require('lang.build').conf_yabs, 86 + } 87 + -- Auto-completion 88 + use { 89 + 'hrsh7th/nvim-cmp', 90 + requires = { 91 + -- Sources 92 + 'Saecki/crates.nvim', 93 + 'hrsh7th/cmp-buffer', 94 + 'hrsh7th/cmp-nvim-lsp', 95 + 'hrsh7th/cmp-nvim-lua', 96 + 'hrsh7th/cmp-vsnip', 97 + -- Further Requirements 98 + 'hrsh7th/vim-vsnip', 99 + 'nvim-lua/plenary.nvim' 100 + }, 101 + config = require('plugins.completion').conf_cmp, 102 + } 103 + -- Component: Popup Navigation/Search 104 + use { 105 + 'nvim-telescope/telescope.nvim', 106 + requires = {'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim', }, 107 + config = require('plugins.search').conf_telescope, 108 + } 109 + -- Setup Packer if just installed 110 + if packer_bootstrap then 111 + require('packer').sync() 112 + end 113 + end)
+85
dot_config/nvim/lua/lang/build.lua
···
··· 1 + -- YABS 2 + function conf_yabs() 3 + require("yabs"):setup { 4 + languages = { 5 + cpp = { 6 + default_task = require("yabs").first_available("cmake_build", "make_build"), 7 + }, 8 + c = { 9 + default_task = require("yabs").first_available("cmake_build", "make_build"), 10 + }, 11 + rust = { 12 + default_task = "build", 13 + tasks = { 14 + build = { 15 + command = "cargo build -q", 16 + output = "quickfix", 17 + }, 18 + build_rel = { 19 + command = "cargo build -q --release", 20 + output = "quickfix", 21 + }, 22 + clean = { 23 + command = "cargo clean", 24 + output = "quickfix", 25 + }, 26 + run = { 27 + command = "cargo run", 28 + output = "quickfix", 29 + }, 30 + test = { 31 + command = "cargo test", 32 + output = "quickfix", 33 + }, 34 + } 35 + }, 36 + }, 37 + -- Default tasks 38 + tasks = { 39 + cmake_build = { 40 + command = "cmake --build build --config Debug", 41 + condition = require("yabs.conditions").file_exists("CMakeLists.txt"), 42 + output = "quickfix", 43 + }, 44 + cmake_build_rel = { 45 + command = "cmake --build build --config Release", 46 + condition = require("yabs.conditions").file_exists("CMakeLists.txt"), 47 + output = "quickfix", 48 + }, 49 + cmake_clean = { 50 + command = "cmake --build build --target clean", 51 + condition = require("yabs.conditions").file_exists("CMakeLists.txt"), 52 + output = "quickfix", 53 + }, 54 + cmake_configure = { 55 + command = "cmake -B build -S .", 56 + condition = require("yabs.conditions").file_exists("CMakeLists.txt"), 57 + output = "quickfix", 58 + }, 59 + make_build = { 60 + command = "make", 61 + condition = require("yabs.conditions").file_exists("Makefile"), 62 + output = "quickfix", 63 + }, 64 + make_clean = { 65 + command = "make clean", 66 + condition = require("yabs.conditions").file_exists("Makefile"), 67 + output = "quickfix", 68 + }, 69 + make_test = { 70 + command = "make test", 71 + condition = require("yabs.conditions").file_exists("Makefile"), 72 + output = "quickfix", 73 + }, 74 + }, 75 + opts = { 76 + output_types = { 77 + quickfix = { 78 + open_on_run = "always" 79 + } 80 + } 81 + }, 82 + } 83 + end 84 + 85 + return { conf_yabs = conf_yabs }
+7
dot_config/nvim/lua/lang/c++.lua
···
··· 1 + local lsp_settings = require('support.lsp') 2 + local nvim_lsp = require('lspconfig') 3 + 4 + nvim_lsp.clangd.setup { 5 + on_attach = lsp_settings.on_attach, 6 + capabilities = lsp_settings.capabilites, 7 + }
+29
dot_config/nvim/lua/lang/debug.lua
···
··· 1 + -- DAP 2 + function conf_debug() 3 + local dap = require('dap') 4 + dap.adapters.lldb = { 5 + type = 'executable', 6 + command = '/opt/homebrew/opt/llvm/bin/lldb-vscode', -- adjust as needed 7 + name = "lldb" 8 + } 9 + dap.configurations.cpp = { 10 + { 11 + name = "Launch", 12 + type = "lldb", 13 + request = "launch", 14 + program = function() 15 + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') 16 + end, 17 + cwd = '${workspaceFolder}', 18 + stopOnEntry = false, 19 + args = {}, 20 + runInTerminal = false, 21 + }, 22 + } 23 + -- Use the same configuration for C and Rust 24 + dap.configurations.c = dap.configurations.cpp 25 + dap.configurations.rust = dap.configurations.cpp 26 + 27 + end 28 + 29 + return { conf_debug = conf_debug }
+9
dot_config/nvim/lua/lang/go.lua
···
··· 1 + local lsp_settings = require('support.lsp') 2 + local nvim_lsp = require('lspconfig') 3 + 4 + nvim_lsp.gopls.setup { 5 + on_attach = lsp_settings.on_attach, 6 + capabilities = lsp_settings.capabilites, 7 + } 8 + 9 + vim.cmd('autocmd Filetype go setlocal tabstop=4 shiftwidth=4')
+9
dot_config/nvim/lua/lang/python.lua
···
··· 1 + local lsp_settings = require('support.lsp') 2 + local nvim_lsp = require('lspconfig') 3 + 4 + nvim_lsp.pylsp.setup { 5 + on_attach = lsp_settings.on_attach, 6 + capabilities = lsp_settings.capabilites, 7 + } 8 + 9 + vim.cmd('autocmd Filetype python setlocal tabstop=4 shiftwidth=4 expandtab')
+9
dot_config/nvim/lua/lang/rust.lua
···
··· 1 + local lsp_settings = require('support.lsp') 2 + local nvim_lsp = require('lspconfig') 3 + 4 + nvim_lsp.rust_analyzer.setup { 5 + on_attach = lsp_settings.on_attach, 6 + capabilities = lsp_settings.capabilites, 7 + } 8 + 9 + vim.cmd('autocmd Filetype rust setlocal tabstop=4 shiftwidth=4 expandtab')
+8
dot_config/nvim/lua/lang/svelte.lua
···
··· 1 + local lsp_settings = require('support.lsp') 2 + local nvim_lsp = require('lspconfig') 3 + 4 + nvim_lsp.svelte.setup { 5 + on_attach = lsp_settings.on_attach, 6 + capabilities = lsp_settings.capabilites, 7 + filetypes = { "javascript", "typescript", "svelte" } 8 + }
+7
dot_config/nvim/lua/lang/tex.lua
···
··· 1 + local lsp_settings = require('support.lsp') 2 + local nvim_lsp = require('lspconfig') 3 + 4 + nvim_lsp.texlab.setup { 5 + on_attach = lsp_settings.on_attach, 6 + capabilities = lsp_settings.capabilites, 7 + }
+1
dot_config/nvim/lua/lang/yaml.lua
···
··· 1 + vim.cmd('autocmd Filetype yaml setlocal tabstop=2 shiftwidth=2 expandtab')
+14
dot_config/nvim/lua/lang/zinc.lua
···
··· 1 + local treesitter = require('nvim-treesitter.parsers') 2 + local parser_config = treesitter.get_parser_configs() 3 + parser_config.minizinc = { 4 + install_info = { 5 + url = "https://github.com/shackle-rs/shackle", 6 + branch = "develop", 7 + files = {"src/parser.c"}, 8 + location = "misc/tree-sitter-minizinc", 9 + }, 10 + filetype = "zinc", 11 + used_by = {"mzn", "fzn", "dzn"} 12 + } 13 + 14 + vim.cmd('autocmd Filetype zinc setlocal commentstring=\\%\\ %s')
+103
dot_config/nvim/lua/options.lua
···
··· 1 + -- Incremental live completion 2 + vim.opt.inccommand = "nosplit" 3 + 4 + -- Do not save when switching buffers 5 + vim.opt.hidden = true 6 + 7 + -- Enable mouse mode 8 + vim.opt.mouse = "a" 9 + 10 + -- Use system clipboard 11 + vim.opt.clipboard:prepend {"unnamedplus"} 12 + 13 + -- Toggle to disable mouse mode and indentlines for easier paste 14 + ToggleMouse = function() 15 + if vim.opt.mouse == 'a' then 16 + vim.cmd[[IndentBlanklineDisable]] 17 + vim.opt.signcolumn='no' 18 + vim.opt.mouse = 'v' 19 + vim.opt.number = false 20 + print("Mouse disabled") 21 + else 22 + vim.cmd[[IndentBlanklineEnable]] 23 + vim.opt.signcolumn='yes' 24 + vim.opt.mouse = 'a' 25 + vim.opt.number = true 26 + print("Mouse enabled") 27 + end 28 + end 29 + 30 + vim.api.nvim_set_keymap('n', '<F10>', '<cmd>lua ToggleMouse()<cr>', { noremap = true }) 31 + 32 + -- Save undo history 33 + vim.cmd[[set undofile]] 34 + 35 + -- Decrease update time 36 + vim.opt.updatetime = 250 37 + vim.opt.signcolumn="yes" 38 + 39 + -- Remap escape to leave terminal mode 40 + vim.api.nvim_exec([[ 41 + augroup Terminal 42 + autocmd! 43 + au TermOpen * tnoremap <buffer> <Esc> <c-\><c-n> 44 + au TermOpen * set nonu 45 + augroup end 46 + ]], false) 47 + 48 + -- Enable spellcheck 49 + -- vim.opt.spell = true 50 + vim.opt.spelllang = "en_au,nl" 51 + 52 + --Make line numbers default 53 + vim.opt.number = true 54 + vim.opt.relativenumber = true 55 + 56 + -- Softwrap settings 57 + vim.opt.breakindent = true 58 + vim.opt.showbreak = "โ†ช " 59 + vim.opt.linebreak = true 60 + 61 + -- Change preview window location 62 + vim.g.splitbelow = true 63 + 64 + -- Highlight on yank 65 + vim.api.nvim_exec([[ 66 + augroup YankHighlight 67 + autocmd! 68 + autocmd TextYankPost * silent! lua vim.highlight.on_yank() 69 + augroup end 70 + ]], false) 71 + 72 + -- Start search when you start typing 73 + vim.opt.incsearch = true 74 + 75 + -- Case insensitive searching UNLESS /C or capital in search 76 + vim.opt.ignorecase = true 77 + vim.opt.smartcase = true 78 + 79 + -- Default indentation 80 + vim.opt.shiftwidth = 2 81 + vim.opt.tabstop = 2 82 + vim.opt.smartindent = true 83 + vim.opt.expandtab = false 84 + 85 + -- Code Folding 86 + -- vim.opt.foldmethod = 'expr' 87 + -- vim.opt.foldexpr = 'nvim_treesitter#foldexpr()' 88 + -- vim.opt.foldminlines = 5 89 + -- vim.opt.foldnestmax = 2 90 + 91 + -- Save when lost focus 92 + vim.cmd('au FocusLost * silent! wa') 93 + 94 + -- Map :Format to vim.lsp.buf.formatting() 95 + vim.cmd([[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]) 96 + vim.cmd([[ 97 + augroup format 98 + autocmd! 99 + autocmd BufWritePre * :Format 100 + augroup END 101 + ]]) 102 + 103 + vim.cmd([[ autocmd BufWritePost ~/.local/share/chezmoi/* ! chezmoi apply --source-path "%" ]])
+52
dot_config/nvim/lua/plugins/appearance.lua
···
··· 1 + -- Colour Scheme configuration 2 + local conf_theme = function() 3 + local dn = require('dark_notify') 4 + local gps = require('nvim-gps') 5 + require('rose-pine').setup({ 6 + dark_variant = 'moon', 7 + }) 8 + dn.run({ 9 + schemes = { 10 + dark = 'rose-pine', 11 + light = 'rose-pine', 12 + }, 13 + onchange = function(mode) 14 + --Set statusbar 15 + require('plenary.reload').reload_module('lualine', true) 16 + require('lualine').setup { 17 + options = { 18 + icons_enabled = 0, 19 + theme = 'rose-pine' 20 + }, 21 + sections = { 22 + lualine_c = { 23 + 'filename', 24 + { gps.get_location, cond = gps.is_available }, 25 + }, 26 + } 27 + } 28 + end, 29 + }) 30 + end 31 + 32 + local conf_indent = function() 33 + vim.g.indent_blankline_char = "โ”Š" -- โ”‚ is another good option 34 + vim.g.indent_blankline_filetype_exclude = { 'help', 'packer' } 35 + vim.g.indent_blankline_buftype_exclude = { 'terminal', 'nofile'} 36 + vim.g.indent_blankline_char_highlight = 'LineNr' 37 + end 38 + 39 + local conf_treesitter = function() 40 + require'nvim-treesitter.configs'.setup { 41 + ensure_installed = 'all', 42 + highlight = { 43 + enable = true, -- false will disable the whole extension 44 + }, 45 + } 46 + end 47 + 48 + return { 49 + conf_theme = conf_theme, 50 + conf_indent = conf_indent, 51 + conf_treesitter = conf_treesitter, 52 + }
+27
dot_config/nvim/lua/plugins/completion.lua
···
··· 1 + -- Configure nvim-cmp 2 + local conf_cmp = function() 3 + local cmp = require('cmp') 4 + cmp.setup({ 5 + snippet = { 6 + expand = function(args) 7 + vim.fn["vsnip#anonymous"](args.body) 8 + end, 9 + }, 10 + mapping = { 11 + ['<C-d>'] = cmp.mapping.scroll_docs(-4), 12 + ['<C-f>'] = cmp.mapping.scroll_docs(4), 13 + ['<C-Space>'] = cmp.mapping.complete(), 14 + ['<C-e>'] = cmp.mapping.close(), 15 + ['<CR>'] = cmp.mapping.confirm({ select = true }), 16 + }, 17 + sources = { 18 + { name = 'buffer' }, 19 + { name = 'crates' }, 20 + { name = 'nvim_lua' }, 21 + { name = 'nvim_lsp' }, 22 + { name = 'path' }, 23 + } 24 + }) 25 + end 26 + 27 + return { conf_cmp = conf_cmp }
+67
dot_config/nvim/lua/plugins/keymap.lua
···
··· 1 + -- Remap space as leader key 2 + vim.api.nvim_set_keymap('', '<Space>', '<Nop>', { noremap = true, silent=true}) 3 + vim.g.mapleader = ' ' 4 + vim.g.maplocalleader = ' ' 5 + 6 + -- Remap for dealing with word wrap 7 + vim.api.nvim_set_keymap('n', 'k', "v:count == 0 ? 'gk' : 'k'", { noremap=true, expr = true, silent = true }) 8 + vim.api.nvim_set_keymap('n', 'j', "v:count == 0 ? 'gj' : 'j'", { noremap= true, expr = true, silent = true }) 9 + 10 + -- Editing 11 + -- Wrap current paragraph 12 + vim.api.nvim_set_keymap('n', '<M-q>', [[gwip]], { noremap = false }) 13 + 14 + -- Windows 15 + vim.api.nvim_set_keymap('n', '<leader>w', [[<C-w>]], { noremap = true }) 16 + 17 + -- Define leader mappings (using which-key) 18 + local whichkey = require("which-key") 19 + whichkey.setup{} 20 + local mappings = { 21 + ["<tab>"] = { "<C-^>", "Reopen Last Buffer" }, 22 + -- Buffer 23 + b = { 24 + name = "Buffer", 25 + b = { "<cmd>lua require('telescope.builtin').buffers()<cr>", "Find Buffer" }, 26 + d = { "<cmd>bd<cr>", "Delete Buffer" }, 27 + m = { "<cmd>%bd|e#<cr>", "Delete Other Buffers" }, 28 + y = { "ggyG<C-o>", "Copy Buffer" }, 29 + }, 30 + -- Debug 31 + d = { 32 + name = "Debug", 33 + b = {"<cmd>lua require('dap').toggle_breakpoint()<cr>", "Breakpoint"}, 34 + B = {"<cmd>lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))<cr>", "Conditional Breakpoint"}, 35 + l = {"<cmd>require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<cr>", "Logpoint"}, 36 + r = {"<cmd>lua require('dap').repl.open()<cr>", "Open REPL"}, 37 + c = {"<cmd>lua require('dap').continue()<cr>", "Continue"}, 38 + q = {"<cmd>lua require('dap').close()<cr>", "Close"}, 39 + }, 40 + -- File 41 + f = { 42 + name = "File", 43 + f = { "<cmd>lua require('telescope.builtin').file_browser()<cr>", "Find File" }, 44 + s = { "<cmd>write<cr>", "Store File" }, 45 + S = { "<cmd>wa<cr>", "Store All Files" }, 46 + }, 47 + -- Search 48 + s = { 49 + name = "Search", 50 + p = { "<cmd>lua require('telescope.builtin').live_grep()<cr>", "Search Project" }, 51 + b = { "<cmd>lua require('telescope.builtin').treesitter()<cr>", "Search Buffer Symbols" }, 52 + }, 53 + -- Project 54 + p = { 55 + f = { "<cmd>lua require('telescope.builtin').find_files()<cr>", "Search Project" }, 56 + b = { "<cmd>lua require('yabs'):run_default_task()<cr>", "Build Project" }, 57 + t = { "<cmd>lua require('telescope').extensions.yabs.tasks()<cr>", "Search Project" }, 58 + }, 59 + 60 + -- Window 61 + q = { 62 + name = "Quit", 63 + q = { "<cmd>qa<cr>", "Quit"}, 64 + }, 65 + w = "Window", 66 + } 67 + whichkey.register(mappings, { prefix = "<leader>" })
+6
dot_config/nvim/lua/plugins/search.lua
···
··· 1 + -- Telescope 2 + function conf_telescope() 3 + require("telescope").setup {} 4 + end 5 + 6 + return { conf_telescope = conf_telescope }
+34
dot_config/nvim/lua/support/lsp.lua
···
··· 1 + -- LSP settings 2 + local on_attach = function(_client, bufnr) 3 + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') 4 + 5 + local opts = { noremap=true, silent=true } 6 + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts) 7 + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts) 8 + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts) 9 + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) 10 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) 11 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>pa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts) 12 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>pr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts) 13 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>pl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts) 14 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts) 15 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) 16 + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) 17 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) 18 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts) 19 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts) 20 + vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts) 21 + vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts) 22 + end 23 + 24 + local capabilities = vim.lsp.protocol.make_client_capabilities() 25 + capabilities.textDocument.completion.completionItem.snippetSupport = true 26 + capabilities.textDocument.completion.completionItem.resolveSupport = { 27 + properties = { 28 + 'documentation', 29 + 'detail', 30 + 'additionalTextEdits', 31 + } 32 + } 33 + 34 + return { on_attach = on_attach, capabilities = capabilities }
+49
dot_config/skhd/skhdrc
···
··· 1 + # Open applications 2 + alt - return : /Applications/kitty.app/Contents/MacOS/kitty --single-instance -d ~ 3 + 4 + # Focus display 5 + alt - tab : yabai -m display --focus recent 6 + 7 + # Focus window 8 + alt - h : yabai -m window --focus west 9 + alt - j : yabai -m window --focus south 10 + alt - k : yabai -m window --focus north 11 + alt - l : yabai -m window --focus east 12 + 13 + alt - left : yabai -m window --focus west 14 + alt - down : yabai -m window --focus south 15 + alt - up : yabai -m window --focus north 16 + alt - right : yabai -m window --focus east 17 + 18 + # Swap window 19 + shift + alt - h : yabai -m window --swap west 20 + shift + alt - j : yabai -m window --swap south 21 + shift + alt - k : yabai -m window --swap north 22 + shift + alt - l : yabai -m window --swap east 23 + 24 + shift + alt - left : yabai -m window --swap west 25 + shift + alt - down : yabai -m window --swap south 26 + shift + alt - up : yabai -m window --swap north 27 + shift + alt - right : yabai -m window --swap east 28 + 29 + # Move focus container to workspace 30 + shift + alt - 1 : yabai -m window --space 1; yabai -m space --focus 1 31 + shift + alt - 2 : yabai -m window --space 2; yabai -m space --focus 2 32 + shift + alt - 3 : yabai -m window --space 3; yabai -m space --focus 3 33 + shift + alt - 4 : yabai -m window --space 4; yabai -m space --focus 4 34 + shift + alt - 5 : yabai -m window --space 5; yabai -m space --focus 5 35 + shift + alt - 6 : yabai -m window --space 6; yabai -m space --focus 6 36 + shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7 37 + shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8 38 + shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9 39 + shift + alt - 0 : yabai -m window --space 0; yabai -m space --focus 0 40 + 41 + # Enable / Disable gaps in current workspace 42 + lctrl + alt - g : yabai -m space --toggle padding; yabai -m space --toggle gap 43 + 44 + # Float / Unfloat window 45 + shift + alt - space : yabai -m window --toggle float; 46 + 47 + # Make window native fullscreen 48 + alt - f : yabai -m window --toggle zoom-fullscreen 49 + shift + alt - f : yabai -m window --toggle native-fullscreen
+103
dot_config/topgrade.toml
···
··· 1 + [misc] 2 + # Don't ask for confirmations 3 + #assume_yes = true 4 + 5 + # Disable specific steps - same options as the command line flag 6 + disable = ["tlmgr", "vim", "gem", "node", "ruby_gems"] 7 + 8 + # Ignore failures for these steps 9 + #ignore_failures = ["powershell"] 10 + 11 + # Run specific steps - same options as the command line flag 12 + #only = ["system", "emacs"] 13 + 14 + # Do not ask to retry failed steps (default: false) 15 + no_retry = true 16 + 17 + # Run inside tmux 18 + #run_in_tmux = true 19 + 20 + # List of remote machines with Topgrade installed on them 21 + #remote_topgrades = ["toothless", "pi", "parnas"] 22 + 23 + # Arguments to pass SSH when upgrading remote systems 24 + #ssh_arguments = "-o ConnectTimeout=2" 25 + 26 + # Path to Topgrade executable on remote machines 27 + #remote_topgrade_path = ".cargo/bin/topgrade" 28 + 29 + # Arguments to pass tmux when pulling Repositories 30 + #tmux_arguments = "-S /var/tmux.sock" 31 + 32 + # Do not set the terminal title 33 + #set_title = false 34 + 35 + # Display the time in step titles 36 + # display_time = true 37 + 38 + # Cleanup temporary or old files 39 + #cleanup = true 40 + 41 + [git] 42 + #max_concurrency = 5 43 + # Additional git repositories to pull 44 + #repos = [ 45 + # "~/src/*/", 46 + # "~/.config/something" 47 + #] 48 + 49 + # Don't pull the predefined git repos 50 + #pull_predefined = false 51 + 52 + # Arguments to pass Git when pulling Repositories 53 + #arguments = "--rebase --autostash" 54 + 55 + [composer] 56 + #self_update = true 57 + 58 + # Commands to run before anything 59 + [pre_commands] 60 + #"Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak" 61 + 62 + # Custom commands 63 + [commands] 64 + #"Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter" 65 + 66 + [brew] 67 + #greedy_cask = true 68 + 69 + [linux] 70 + # Arch Package Manager to use. Allowed values: autodetect, trizen, paru, yay, pikaur, pacman. 71 + #arch_package_manager = "pacman" 72 + # Arguments to pass yay (or paru) when updating packages 73 + #yay_arguments = "--nodevel" 74 + #show_arch_news = true 75 + #trizen_arguments = "--devel" 76 + #pikaur_arguments = "" 77 + #enable_tlmgr = true 78 + #emerge_sync_flags = "-q" 79 + #emerge_update_flags = "-uDNa --with-bdeps=y world" 80 + #redhat_distro_sync = false 81 + #rpm_ostree = false 82 + 83 + [windows] 84 + # Manually select Windows updates 85 + #accept_all_updates = false 86 + #open_remotes_in_new_terminal = true 87 + 88 + # Causes Topgrade to rename itself during the run to allow package managers 89 + # to upgrade it. Use this only if you installed Topgrade by using a package 90 + # manager such as Scoop to Cargo 91 + #self_rename = true 92 + 93 + [npm] 94 + # Use sudo if the NPM directory isn't owned by the current user 95 + #use_sudo = true 96 + 97 + [firmware] 98 + # Offer to update firmware; if false just check for and display available updates 99 + #upgrade = true 100 + 101 + [flatpak] 102 + # Use sudo for updating the system-wide installation 103 + #use_sudo = true
+93
dot_config/xonsh/rc.d/env.xsh
···
··· 1 + import shutil 2 + import sys 3 + 4 + # --- Xonsh Settings --- 5 + $XONSH_HISTORY_BACKEND = 'sqlite' 6 + $HISTCONTROL='ignoredups' 7 + $XONSH_SHOW_TRACEBACK = False 8 + $SUGGEST_COMMANDS = False 9 + 10 + # --- Path Variables --- 11 + #> Use MacOS path_helper executable 12 + source-bash $(/usr/libexec/path_helper -s) 13 + 14 + brew_prefix = $(brew --prefix).strip() 15 + $PATH = [ 16 + brew_prefix + "/opt/bison/bin", 17 + brew_prefix + "/opt/flex/bin", 18 + brew_prefix + "/opt/llvm/bin", 19 + ] + $PATH + [ 20 + $HOME + "/.local/bin", 21 + $HOME + "/.cargo/bin", 22 + ] 23 + 24 + # --- General Environment --- 25 + #> Xonsh Behaviour 26 + $AUTO_CD = True 27 + #> Default Editor 28 + $EDITOR = "nvim" 29 + $VISUAL = "codium" 30 + #> Monash Cluster 31 + $OPTCLUSTER = "compute.optimisation-2020.cloud.edu.au" 32 + #> CMake settings 33 + $CMAKE_EXPORT_COMPILE_COMMANDS = "1" # output compile-commands.json for clangd 34 + $CMAKE_GENERATOR = "Ninja Multi-Config" # use Ninja generator by default 35 + $CMAKE_C_COMPILER_LAUNCHER = "ccache" 36 + $CMAKE_CXX_COMPILER_LAUNCHER = "ccache" 37 + #> FZF 38 + $FZF_DEFAULT_COMMAND = "fd --type f" 39 + 40 + # --- Aliases --- 41 + 42 + def _theme(args): 43 + """This command takes a 44 + """ 45 + DARK_XONSH_STYLE = "stata-dark" 46 + DARK_KITTY_STYLE = "Catppuccin-Macchiato" 47 + LIGHT_XONSH_STYLE = "stata-light" 48 + LIGHT_KITTY_STYLE = "Catppuccin-Latte" 49 + if len(args) == 0 or args[0] == "info": 50 + print("dark" if $XONSH_COLOR_STYLE == DARK_XONSH_STYLE else "light") 51 + elif args[0] == "set": 52 + dark_mode = False 53 + if len(args) > 1: 54 + if args[1] == "dark": 55 + dark_mode = True 56 + elif args[1] == "light": 57 + dark_mode = False 58 + else: 59 + print(f"unknown theme `{args[1]}'", file=sys.stderr) 60 + return 1 61 + else: 62 + try: 63 + import warnings 64 + 65 + with warnings.catch_warnings(): 66 + warnings.simplefilter("ignore") 67 + import darkdetect 68 + 69 + dark_mode = darkdetect.isDark() 70 + except ImportError: 71 + print("darkdetect package not found (xpip install darkdetect)", file=sys.stderr) 72 + $XONSH_COLOR_STYLE = DARK_XONSH_STYLE if dark_mode else LIGHT_XONSH_STYLE 73 + $( kitty +kitten themes --cache-age=-1 @(DARK_KITTY_STYLE if dark_mode else LIGHT_KITTY_STYLE) ) 74 + else: 75 + print(f"unknown argument `{args[0]}'", file=sys.stderr) 76 + return 1 77 + return 0 78 + 79 + aliases["brew-backup"] = ("brew", "bundle", "dump", "--global", "--no-lock", "--cask", "--mas", "--tap", "--force") 80 + aliases["brew-cleanup"] = ("brew", "bundle", "cleanup", "--global", "--no-lock", "--force", "--zap") 81 + aliases["brew-restore"] = ("brew", "bundle", "install", "--global", "--no-lock") 82 + aliases["edit"] = $VISUAL 83 + aliases["ssh"] = ("kitty", "+kitten", "ssh") 84 + aliases["theme"] = _theme 85 + if shutil.which('bat'): 86 + aliases["less"] = "bat" 87 + if shutil.which('exa'): 88 + aliases["ls"] = "exa" 89 + if shutil.which('rsync'): 90 + aliases['cp'] = 'rsync --progress --recursive --archive' 91 + 92 + # --- Set theme based on Dark Mode --- 93 + _theme(["set"])
+10
dot_config/xonsh/rc.d/plugins.xsh
···
··· 1 + #> Homebrew integration 2 + source-bash $(brew shellenv) 3 + #> Kitty integration 4 + xontrib load kitty 5 + #> Vox: Xonsh Python virtual environment manager 6 + xontrib load vox 7 + #> Starship: smart prompt 8 + execx($(starship init xonsh)) 9 + #> Zoxide: smart cd 10 + execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
+20
dot_config/yabai/executable_yabairc
···
··· 1 + yabai -m config layout bsp 2 + yabai -m config top_padding 4 3 + yabai -m config bottom_padding 4 4 + yabai -m config left_padding 4 5 + yabai -m config right_padding 4 6 + yabai -m config window_gap 4 7 + 8 + yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off 9 + yabai -m rule --add label="Activity Monitor" app="^Activity Monitor$" manage=off 10 + yabai -m rule --add label="App Store" app="^App Store$" manage=off 11 + yabai -m rule --add label="Calculator" app="^Calculator$" manage=off 12 + yabai -m rule --add label="Dictionary" app="^Dictionary$" manage=off 13 + yabai -m rule --add label="Digital Colour Meter" app="^Digital Colou?r Meter$" sticky=on 14 + yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off 15 + yabai -m rule --add label="Fork" app="^Fork$" manage=off sticky=on 16 + yabai -m rule --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off 17 + yabai -m rule --add label="Software Update" title="Software Update" manage=off 18 + yabai -m rule --add label="Sublime Merge" app="^Sublime Merge$" manage=off sticky=on 19 + yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off 20 + yabai -m rule --add label="Tweetbot" app="^Tweetbot$" title=".*" manage=off
+13
dot_gitignore
···
··· 1 + .DS_Store 2 + .svn 3 + *~ 4 + *.swp 5 + *.rbc 6 + .idea/ 7 + __pycache__/ 8 + .vscode 9 + .clangd/ 10 + compile_commands.json 11 + *.sublime-project 12 + *.sublime-workspace 13 + build.nosync/
+24
dot_zshrc
···
··· 1 + set -o vi 2 + 3 + # History file configuration 4 + [ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history" 5 + HISTSIZE=50000 6 + SAVEHIST=10000 7 + 8 + # History command configuration 9 + setopt extended_history # record timestamp of command in HISTFILE 10 + setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE 11 + setopt hist_ignore_dups # ignore duplicated commands history list 12 + setopt hist_ignore_space # ignore commands that start with space 13 + setopt hist_verify # show command with history expansion to user before running it 14 + setopt inc_append_history # add commands to HISTFILE in order of execution 15 + setopt share_history # share command history data 16 + setopt autocd # change directory when given dir without cmd 17 + 18 + # Case insensitive autocompletion 19 + zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' 20 + 21 + # Start Starship Prompt 22 + if command -v starship &> /dev/null; then 23 + eval "$(starship init zsh)" 24 + fi
-71
flake.lock
··· 1 - { 2 - "nodes": { 3 - "darwin": { 4 - "inputs": { 5 - "nixpkgs": [ 6 - "nixpkgs" 7 - ] 8 - }, 9 - "locked": { 10 - "lastModified": 1762912391, 11 - "narHash": "sha256-4hpBE7bGd24SfD28rzMdUGXsLsNEYxCCrTipFdoqoNM=", 12 - "owner": "LnL7", 13 - "repo": "nix-darwin", 14 - "rev": "d76299b2cd01837c4c271a7b5186e3d5d8ebd126", 15 - "type": "github" 16 - }, 17 - "original": { 18 - "owner": "LnL7", 19 - "ref": "nix-darwin-25.05", 20 - "repo": "nix-darwin", 21 - "type": "github" 22 - } 23 - }, 24 - "home-manager": { 25 - "inputs": { 26 - "nixpkgs": [ 27 - "nixpkgs" 28 - ] 29 - }, 30 - "locked": { 31 - "lastModified": 1763992789, 32 - "narHash": "sha256-WHkdBlw6oyxXIra/vQPYLtqY+3G8dUVZM8bEXk0t8x4=", 33 - "owner": "nix-community", 34 - "repo": "home-manager", 35 - "rev": "44831a7eaba4360fb81f2acc5ea6de5fde90aaa3", 36 - "type": "github" 37 - }, 38 - "original": { 39 - "owner": "nix-community", 40 - "ref": "release-25.05", 41 - "repo": "home-manager", 42 - "type": "github" 43 - } 44 - }, 45 - "nixpkgs": { 46 - "locked": { 47 - "lastModified": 1764018730, 48 - "narHash": "sha256-ytszH039PHJ9HhUiH2i17ewZ+s8io9IdEBh9mtnTNQ0=", 49 - "owner": "nixos", 50 - "repo": "nixpkgs", 51 - "rev": "48ac51dd5d116984766707fd5c5661477a053b00", 52 - "type": "github" 53 - }, 54 - "original": { 55 - "owner": "nixos", 56 - "ref": "nixpkgs-25.05-darwin", 57 - "repo": "nixpkgs", 58 - "type": "github" 59 - } 60 - }, 61 - "root": { 62 - "inputs": { 63 - "darwin": "darwin", 64 - "home-manager": "home-manager", 65 - "nixpkgs": "nixpkgs" 66 - } 67 - } 68 - }, 69 - "root": "root", 70 - "version": 7 71 - }
···
-57
flake.nix
··· 1 - { 2 - description = "Dekker1's home manager configuation"; 3 - 4 - inputs = { 5 - nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-25.05-darwin"; 6 - home-manager = { 7 - url = "github:nix-community/home-manager/release-25.05"; 8 - inputs.nixpkgs.follows = "nixpkgs"; 9 - }; 10 - darwin = { 11 - url = "github:LnL7/nix-darwin/nix-darwin-25.05"; 12 - inputs.nixpkgs.follows = "nixpkgs"; 13 - }; 14 - }; 15 - outputs = 16 - { darwin 17 - , home-manager 18 - , nixpkgs 19 - , ... 20 - } @ inputs: 21 - let 22 - # Systems that can be used 23 - linuxSystems = [ "x86_64-linux" "aarch64-linux" ]; 24 - darwinSystems = [ "aarch64-darwin" "x86_64-darwin" ]; 25 - # Arguments that are passed into the system configuration 26 - name = "Jip J. Dekker"; 27 - email = "jip@dekker.one"; 28 - sshSignKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCC0liW47USr/Ic1rJ52V4eE07y42VG9Ols1zYBrPlc"; 29 - user = "dekker1"; 30 - # Special arguments that are passed into each system configuration 31 - specialArgs = inputs // { inherit email name sshSignKey user; }; 32 - in 33 - { 34 - darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (system: 35 - darwin.lib.darwinSystem { 36 - inherit system specialArgs; 37 - modules = [ 38 - home-manager.darwinModules.home-manager 39 - ./darwin 40 - ]; 41 - } 42 - ); 43 - nixosConfigurations = nixpkgs.lib.genAttrs linuxSystems (system: nixpkgs.lib.nixosSystem { 44 - inherit system specialArgs; 45 - modules = [ 46 - home-manager.nixosModules.home-manager { 47 - home-manager = { 48 - useGlobalPkgs = true; 49 - useUserPackages = true; 50 - users.${user} = import ./nixos/home-manager.nix; 51 - }; 52 - } 53 - ./nixos 54 - ]; 55 - }); 56 - }; 57 - }
···
-38
nixos/default.nix
··· 1 - { pkgs, user, ... }: 2 - { 3 - imports = [ 4 - ../shared 5 - ../shared/cachix 6 - ]; 7 - 8 - # Set your time zone. 9 - time.timeZone = "Australia/Melbourne"; 10 - 11 - # Turn on flag for proprietary software 12 - nix = { 13 - nixPath = [ "nixos-config=/home/${user}/.local/share/nixos-config:/etc/nixos" ]; 14 - settings.allowed-users = [ "${user}" ]; 15 - package = pkgs.nixUnstable; 16 - extraOptions = '' 17 - experimental-features = nix-command flakes 18 - ''; 19 - }; 20 - 21 - # It's me, it's you, it's everyone 22 - users.users.${user} = { 23 - isNormalUser = true; 24 - extraGroups = [ 25 - "wheel" # Enable โ€˜sudoโ€™ for the user. 26 - ]; 27 - shell = pkgs.zsh; 28 - }; 29 - 30 - environment.systemPackages = import ../shared/packages.nix { inherit pkgs; } ++ (with pkgs; [ 31 - # Linux specific packages 32 - gitAndTools.gitFull 33 - ]); 34 - 35 - fonts.packages = import ../shared/fonts.nix { inherit pkgs; }; 36 - 37 - system.stateVersion = "25.05"; 38 - }
···
-18
nixos/home-manager.nix
··· 1 - { config, email, lib, name, pkgs, sshSignKey, user, ... }: 2 - { 3 - home = { 4 - enableNixpkgsReleaseCheck = false; 5 - username = "${user}"; 6 - homeDirectory = "/home/${user}"; 7 - stateVersion = "25.05"; 8 - }; 9 - 10 - programs = lib.attrsets.recursiveUpdate (import ../shared/home-manager.nix { 11 - inherit config email lib name pkgs sshSignKey user; 12 - }) { 13 - firefox = { 14 - enable = true; 15 - package = pkgs.firefox-bin; 16 - }; 17 - }; 18 - }
···
+9
private_Library/private_Application Support/nushell/config.nu
···
··· 1 + if not 'config' in $env { 2 + $env.config = ([] | into record) 3 + } 4 + $env.config = ($env.config | upsert show_banner false) 5 + $env.config = ($env.config | upsert rm.always_trash true) 6 + $env.config = ($env.config | upsert edit_mode vi) 7 + $env.config = ($env.config | upsert history.max_size 100000) 8 + $env.config = ($env.config | upsert footer_mode auto) 9 + $env.config = ($env.config | upsert history.file_format "sqlite")
+83
private_Library/private_Application Support/nushell/env.nu
···
··· 1 + # Nushell Environment Config File 2 + 3 + ### Load standardised prompt "starship" 4 + # TEMP: Custom vi prompt indicators 5 + $env.PROMPT_INDICATOR_VI_INSERT = "" 6 + $env.PROMPT_INDICATOR_VI_NORMAL = "" 7 + source ~/.cache/starship/init.nu 8 + 9 + # Specifies how environment variables are: 10 + # - converted from a string to a value on Nushell startup (from_string) 11 + # - converted from a value back to a string when running external commands (to_string) 12 + # Note: The conversions happen *after* config.nu is loaded 13 + $env.ENV_CONVERSIONS = { 14 + "PATH": { 15 + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } 16 + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } 17 + } 18 + } 19 + 20 + # Directories to search for scripts when calling source or use 21 + # 22 + # By default, <nushell-config-dir>/scripts is added 23 + $env.NU_LIB_DIRS = [ ($nu.default-config-dir | path join 'scripts') ] 24 + 25 + # Directories to search for plugin binaries when calling register 26 + # 27 + # By default, <nushell-config-dir>/plugins is added 28 + $env.NU_PLUGIN_DIRS = [ ($nu.default-config-dir | path join 'plugins') ] 29 + 30 + # Add entries to PATH: 31 + # From MacOS helper (/usr/libexec/path_helper) 32 + $env.PATH = ($env.PATH | split row (char esep) | append "/Library/TeX/texbin") 33 + $env.PATH = ($env.PATH | split row (char esep) | append "/Library/Apple/usr/bin") 34 + $env.PATH = ($env.PATH | split row (char esep) | append "/opt/homebrew/bin") 35 + $env.PATH = ($env.PATH | split row (char esep) | append "/opt/homebrew/sbin") 36 + $env.PATH = ($env.PATH | split row (char esep) | append "/usr/local/bin") 37 + # Optional Homebrew packages 38 + $env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/bison/bin") 39 + $env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/flex/bin") 40 + $env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/llvm/bin") 41 + $env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/openjdk/bin") 42 + # Other package managers 43 + $env.PATH = ($env.PATH | split row (char esep) | prepend $"($env.HOME)/.local/bin") 44 + $env.PATH = ($env.PATH | split row (char esep) | prepend $"($env.HOME)/.cargo/bin") 45 + 46 + # --- user custom --- 47 + # Set default editor 48 + $env.EDITOR = "nvim" 49 + $env.VISUAL = "codium" 50 + # Alias for Monash compute cluster 51 + $env.OPTCLUSTER = "compute.optimisation-2020.cloud.edu.au" 52 + # CMake settings 53 + $env.CMAKE_EXPORT_COMPILE_COMMANDS = "1" # output compile-commands.json for clangd 54 + $env.CMAKE_GENERATOR = "Ninja Multi-Config" # use Ninja generator by default 55 + $env.CMAKE_C_COMPILER_LAUNCHER = "ccache" 56 + $env.CMAKE_CXX_COMPILER_LAUNCHER = "ccache" 57 + # Homebrew shell setup (brew shellenv) 58 + $env.HOMEBREW_PREFIX = "/opt/homebrew" 59 + $env.HOMEBREW_CELLAR = "/opt/homebrew/Cellar" 60 + $env.HOMEBREW_REPOSITORY = "/opt/homebrew" 61 + $env.INFOPATH = "/opt/homebrew/share/info" 62 + # Set MANPATH 63 + $env.MANPATH = "/usr/share/man:/usr/local/share/man:/Library/TeX/Distributions/.DefaultTeX/Contents/Man:/opt/homebrew/share/man" 64 + 65 + ### Setup aliases 66 + alias edit = ^($env.VISUAL) 67 + alias start = ^open 68 + alias less = bat 69 + alias set-light-theme = kitty +kitten themes Catppuccin-Latte 70 + alias set-dark-theme = kitty +kitten themes Catppuccin-Macchiato 71 + alias brew-backup = brew bundle dump --global --no-lock --formula --cask --mas --tap --force 72 + alias brew-cleanup = brew bundle cleanup --global --no-lock --force --zap 73 + alias brew-restore = brew bundle install --global --no-lock 74 + 75 + # Load autojump plugin "zoxide" 76 + source ~/.cache/zoxide/zoxide.nu 77 + 78 + # Load completions 79 + source ~/.cache/nu_scripts/custom-completions/cargo/cargo-completions.nu 80 + source ~/.cache/nu_scripts/custom-completions/git/git-completions.nu 81 + source ~/.cache/nu_scripts/custom-completions/make/make-completions.nu 82 + source ~/.cache/nu_scripts/custom-completions/npm/npm-completions.nu 83 + source ~/.cache/nu_scripts/custom-completions/typst/typst-completions.nu
+3
private_Library/private_Application Support/private_Sublime Merge/private_Packages/private_User/Diff.sublime-settings
···
··· 1 + { 2 + "draw_white_space": "all" 3 + }
+6
private_Library/private_Application Support/private_Sublime Merge/private_Packages/private_User/Preferences.sublime-settings
···
··· 1 + { 2 + "font_face": "Iosevka", 3 + "font_size": 15, 4 + "tab_size": 2, 5 + "theme": "auto", 6 + }
+4
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/LSP.sublime-settings
···
··· 1 + // Settings in here override those in "LSP/LSP.sublime-settings" 2 + { 3 + "lsp_format_on_save": true, 4 + }
+18
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/Package Control.sublime-settings
···
··· 1 + { 2 + "bootstrapped": true, 3 + "in_process_packages": [], 4 + "installed_packages": [ 5 + "CMakeFormat", 6 + "Debugger", 7 + "LSP", 8 + "LSP-json", 9 + "LSP-ltex-ls", 10 + "LSP-rust-analyzer", 11 + "LSP-svelte", 12 + "LSP-TexLab", 13 + "MiniZinc Language", 14 + "Package Control", 15 + "Svelte", 16 + "xonsh", 17 + ], 18 + }
+11
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/Preferences.sublime-settings
···
··· 1 + // Settings in here override those in "Default/Preferences.sublime-settings", 2 + // and are overridden in turn by syntax-specific settings. 3 + { 4 + "font_face": "Iosevka Slab", 5 + "font_size": 16, 6 + "color_scheme": "auto", 7 + "save_on_focus_lost": true, 8 + "ignored_packages": [ 9 + "Vintage", 10 + ], 11 + }
+50
private_Library/private_Application Support/private_VSCodium/User/settings.json
···
··· 1 + { 2 + "clangd.arguments": [ 3 + "--compile-commands-dir=./build.nosync/" 4 + ], 5 + "clangd.checkUpdates": true, 6 + "cmake.buildDirectory": "${workspaceFolder}/build.nosync", 7 + "cmake.configureOnOpen": false, 8 + "cmake.environment": { 9 + "CMAKE_C_COMPILER_LAUNCHER": "ccache", 10 + "CMAKE_CXX_COMPILER_LAUNCHER": "ccache" 11 + }, 12 + "cmake.generator": "Ninja Multi-Config", 13 + "cmake.installPrefix": "${workspaceFolder}/build.nosync/install", 14 + "editor.fontFamily": "Iosevka, Menlo, Monaco, 'Courier New', monospace", 15 + "editor.fontLigatures": true, 16 + "editor.fontSize": 14, 17 + "editor.formatOnSave": true, 18 + "editor.insertSpaces": false, 19 + "editor.tabSize": 2, 20 + "editor.wordWrap": "on", 21 + "extensions.ignoreRecommendations": true, 22 + "files.autoSave": "onWindowChange", 23 + "files.insertFinalNewline": true, 24 + "lldb.showDisassembly": "never", 25 + "ltex.additionalRules.enablePickyRules": true, 26 + "ltex.language": "en-GB", 27 + "rust-analyzer.debug.engine": "vadimcn.vscode-lldb", 28 + "rust-analyzer.rustfmt.extraArgs": [ 29 + "+nightly" 30 + ], 31 + "rust-analyzer.rustfmt.overrideCommand": null, 32 + "shackleLanguageServer.executable": "/Users/dekker1/Library/Mobile Documents/com~apple~CloudDocs/Code/github.com/shackle/target/debug/shackle-ls", 33 + "terminal.external.osxExec": "kitty.app", 34 + "terminal.integrated.confirmOnExit": "hasChildProcesses", 35 + "terminal.integrated.defaultProfile.osx": "Nushell", 36 + "terminal.integrated.scrollback": 10000, 37 + "window.autoDetectColorScheme": true, 38 + "window.zoomLevel": -0.5, 39 + "workbench.colorTheme": "Catppuccin Latte", 40 + "workbench.preferredDarkColorTheme": "Catppuccin Macchiato", 41 + "workbench.preferredLightColorTheme": "Catppuccin Latte", 42 + "[python]": { 43 + "editor.defaultFormatter": "ms-python.black-formatter" 44 + }, 45 + "sapling.showInlineBlame": true, 46 + "files.exclude": { 47 + "**/.sl": true 48 + }, 49 + "cmake.showOptionsMovedNotification": false 50 + }
+15
private_Library/private_Preferences/sapling/sapling.conf
···
··· 1 + [ui] 2 + username =Jip J. Dekker <jip@dekker.one> 3 + ignore.userroot = ~/.gitignore 4 + 5 + # uncomment to disable color in command output 6 + # (see 'sl help color' for details) 7 + # color = never 8 + 9 + # uncomment to disable command output pagination 10 + # (see 'sl help pager' for details) 11 + # paginate = never 12 + 13 + [isl] 14 + hasShownGettingStarted = false 15 + render-compact = false
+29
private_dot_gitconfig
···
··· 1 + [alias] 2 + co = checkout 3 + l = log --graph --decorate --pretty=oneline --abbrev-commit 4 + prune = fetch --prune 5 + stash-all = stash save --include-untracked 6 + s = status 7 + undo = reset --soft HEAD^ 8 + [commit] 9 + gpgSign = true 10 + [core] 11 + excludesfile = /Users/dekker1/.gitignore 12 + [credential] 13 + helper = osxkeychain 14 + [help] 15 + autocorrect = 1 16 + [push] 17 + default = simple 18 + [user] 19 + name = Jip J. Dekker 20 + email = jip@dekker.one 21 + signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCC0liW47USr/Ic1rJ52V4eE07y42VG9Ols1zYBrPlc 22 + [pull] 23 + ff = only 24 + [init] 25 + defaultBranch = develop 26 + [gpg] 27 + format = ssh 28 + [gpg "ssh"] 29 + program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign
+7
private_dot_gnupg/gpg-agent.conf.tmpl
···
··· 1 + {{- if (eq .chezmoi.os "darwin") -}} 2 + {{- if (eq .chezmoi.arch "arm64") -}} 3 + pinentry-program /opt/homebrew/bin/pinentry-mac 4 + {{ else -}} 5 + pinentry-program /usr/local/bin/pinentry-mac 6 + {{ end -}} 7 + {{- end -}}
+2
private_dot_ssh/config
···
··· 1 + Host * 2 + UseKeychain yes
+12
run_nushell_generation.nu
···
··· 1 + #!/usr/bin/env nu 2 + 3 + # Generate zoxide configuration 4 + if (which zoxide | is-empty) == false { 5 + mkdir ~/.cache/zoxide/ 6 + zoxide init nushell --hook prompt | save --force ~/.cache/zoxide/zoxide.nu 7 + } 8 + 9 + if (which starship | is-empty) == false { 10 + mkdir ~/.cache/starship/ 11 + starship init nu | save --force ~/.cache/starship/init.nu 12 + }
-12
shared/cachix/default.nix
··· 1 - { ... }: 2 - { 3 - nix.settings = { 4 - substituters = [ 5 - "https://nix-community.cachix.org" 6 - "https://cache.nixos.org/" 7 - ]; 8 - trusted-public-keys = [ 9 - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 10 - ]; 11 - }; 12 - }
···
-284
shared/config/starship-jetpack.toml
··· 1 - format = """ 2 - $cmd_duration\ 3 - $hostname\ 4 - $localip\ 5 - $shlvl\ 6 - $shell\ 7 - $env_var\ 8 - $username\ 9 - $sudo\ 10 - $character\ 11 - """ 12 - 13 - right_format = """ 14 - $singularity\ 15 - $kubernetes\ 16 - $directory\ 17 - $vcsh\ 18 - $fossil_branch\ 19 - $git_branch\ 20 - $git_commit\ 21 - $git_state\ 22 - $git_metrics\ 23 - $git_status\ 24 - $hg_branch\ 25 - $pijul_channel\ 26 - $docker_context\ 27 - $package\ 28 - $c\ 29 - $cmake\ 30 - $cobol\ 31 - $daml\ 32 - $dart\ 33 - $deno\ 34 - $dotnet\ 35 - $elixir\ 36 - $elm\ 37 - $erlang\ 38 - $fennel\ 39 - $golang\ 40 - $guix_shell\ 41 - $haskell\ 42 - $haxe\ 43 - $helm\ 44 - $java\ 45 - $julia\ 46 - $kotlin\ 47 - $gradle\ 48 - $lua\ 49 - $nim\ 50 - $nodejs\ 51 - $ocaml\ 52 - $opa\ 53 - $perl\ 54 - $php\ 55 - $pulumi\ 56 - $purescript\ 57 - $python\ 58 - $raku\ 59 - $rlang\ 60 - $red\ 61 - $ruby\ 62 - $rust\ 63 - $scala\ 64 - $solidity\ 65 - $swift\ 66 - $terraform\ 67 - $vlang\ 68 - $vagrant\ 69 - $zig\ 70 - $buf\ 71 - $nix_shell\ 72 - $conda\ 73 - $meson\ 74 - $spack\ 75 - $memory_usage\ 76 - $aws\ 77 - $gcloud\ 78 - $openstack\ 79 - $azure\ 80 - $crystal\ 81 - $custom\ 82 - $jobs\ 83 - $status\ 84 - $os\ 85 - $container\ 86 - $battery\ 87 - $time\ 88 - """ 89 - 90 - add_newline = true 91 - 92 - [character] 93 - format = "$symbol " 94 - success_symbol = "[โ—‰](bold italic bright-yellow)" 95 - error_symbol = "[โŠ˜](italic purple)" 96 - 97 - [env_var.VIMSHELL] # vim subshell 98 - format = "[$env_value]($style)" 99 - style = 'green italic' 100 - 101 - [sudo] 102 - format = "[$symbol]($style)" 103 - style = "italic bright-purple" 104 - symbol = "โ—‡โ”ˆ" 105 - disabled = false 106 - 107 - [username] 108 - style_user = "yellow bold" 109 - style_root = "purple bold italic" 110 - format = "[$user]($style) โ–ป " 111 - disabled = false 112 - 113 - [directory] 114 - home_symbol = "โŒ‚" 115 - truncation_length = 2 116 - truncation_symbol = "โ–ฆ " 117 - read_only = " โ– " 118 - style = "italic blue" 119 - format = ' [$path]($style)[$read_only]($read_only_style)' 120 - 121 - [cmd_duration] 122 - min_time = 500 123 - format = "[$duration ](italic bright-yellow)" 124 - 125 - [jobs] 126 - format = "[ $symbol$number]($style)" 127 - style = "white" 128 - symbol = "[โ–ถ ](blue italic)" 129 - 130 - [localip] 131 - ssh_only = true 132 - format = " โ—ฏ[$localipv4](bold magenta)" 133 - disabled = false 134 - 135 - [time] 136 - disabled = false 137 - format = "[ $time]($style)" 138 - time_format = "%R" 139 - utc_time_offset = "local" 140 - style = "dimmed white" 141 - 142 - [battery] 143 - format = "[ $percentage $symbol]($style)" 144 - full_symbol = "[โ–ˆ](italic green)" 145 - charging_symbol = "[โ†‘](italic green)" 146 - discharging_symbol = "[โ†“](italic)" 147 - unknown_symbol = "[โ–‘](italic)" 148 - empty_symbol = "[โ–ƒ](italic red)" 149 - 150 - [[battery.display]] 151 - threshold = 40 152 - style = "dimmed yellow" 153 - 154 - [[battery.display]] 155 - threshold = 70 156 - style = "dimmed white" 157 - 158 - [git_branch] 159 - format = "[ $symbol $branch(:$remote_branch)]($style)" 160 - symbol = "[โ—ฌ](bold bright-blue)" 161 - style = "bold italic bright-blue" 162 - 163 - [git_status] 164 - style = "italic bright-blue" 165 - format = """([โŽช$ahead_behind$staged$modified$untracked$renamed$deleted$conflicted$stashedโŽฅ]($style))""" 166 - conflicted = "[โ—ชโ—ฆ](italic bright-magenta)" 167 - ahead = "[โ–ฒโ”‚[${count}](bold white)โ”‚](italic green)" 168 - behind = "[โ–ฝโ”‚[${count}](bold white)โ”‚](italic red)" 169 - diverged = "[โ—‡ โ–ฒโ”ค[${ahead_count}](regular white)โ”‚โ–ฝโ”ค[${behind_count}](regular white)โ”‚](italic bright-magenta)" 170 - untracked = "[โ—Œโ—ฆ](italic bright-yellow)" 171 - stashed = "[โ—ฆโ—ซโ—ฆ](italic white)" 172 - modified = "[โ—โ—ฆ](italic yellow)" 173 - staged = "[โ– โ”ค[$count](bold white)โ”‚](italic bright-cyan)" 174 - renamed = "[โ—Žโ—ฆ](italic bright-blue)" 175 - deleted = "[โœ•](italic red)" 176 - 177 - [deno] 178 - format = " deno [โˆซ $version](blue italic)" 179 - version_format = "${major}.${minor}" 180 - 181 - [lua] 182 - format = " lua [${symbol}${version}]($style)" 183 - symbol = "โจ€ " 184 - style = "italic bright-yellow" 185 - 186 - [nodejs] 187 - format = " node [โ—ซ ($version)](italic bright-green)" 188 - detect_files = ["package-lock.json", "yarn.lock"] 189 - version_format = "${major}.${minor}" 190 - 191 - [python] 192 - format = " py [${symbol}${version}]($style)" 193 - symbol = "[โŒ‰](italic bright-blue)โŒŠ " 194 - version_format = "${major}.${minor}" 195 - style = "italic bright-yellow" 196 - 197 - [ruby] 198 - format = " rb [${symbol}${version}]($style)" 199 - symbol = "โ—† " 200 - version_format = "${major}.${minor}" 201 - style = "italic red" 202 - 203 - [rust] 204 - format = " rs [$symbol$version]($style)" 205 - symbol = "โŠƒ " 206 - version_format = "${major}.${minor}" 207 - style = "italic red" 208 - 209 - [package] 210 - format = " pkg [$symbol$version]($style)" 211 - version_format = "${major}.${minor}" 212 - symbol = "โ—ซ " 213 - style = "bright-yellow italic" 214 - 215 - [swift] 216 - format = " sw [${symbol}${version}]($style)" 217 - symbol = "โ— " 218 - style = "italic bright-red" 219 - version_format = "${major}.${minor}" 220 - 221 - [aws] 222 - format = " aws [$symbol $profile $region]($style)" 223 - style = "italic blue" 224 - symbol = "โ–ฒ " 225 - 226 - [buf] 227 - symbol = "โ–  " 228 - format = " buf [$symbol $version $buf_version]($style)" 229 - 230 - [c] 231 - symbol = "โˆ " 232 - format = " c [$symbol($version(-$name))]($style)" 233 - 234 - [conda] 235 - symbol = "โ—ฏ " 236 - format = " conda [$symbol$environment]($style)" 237 - 238 - [dart] 239 - symbol = "โ—โ—… " 240 - format = " dart [$symbol($version )]($style)" 241 - 242 - [docker_context] 243 - symbol = "โ—ง " 244 - format = " docker [$symbol$context]($style)" 245 - 246 - [elixir] 247 - symbol = "โ–ณ " 248 - format = " exs [$symbol $version OTP $otp_version ]($style)" 249 - 250 - [elm] 251 - symbol = "โ—ฉ " 252 - format = " elm [$symbol($version )]($style)" 253 - 254 - [golang] 255 - symbol = "โˆฉ " 256 - format = " go [$symbol($version )]($style)" 257 - 258 - [haskell] 259 - symbol = "โฏฮป " 260 - format = " hs [$symbol($version )]($style)" 261 - 262 - [java] 263 - symbol = "โˆช " 264 - format = " java [${symbol}(${version} )]($style)" 265 - 266 - [julia] 267 - symbol = "โ—Ž " 268 - format = " jl [$symbol($version )]($style)" 269 - 270 - [memory_usage] 271 - symbol = "โ–ชโ–ซโ–ช " 272 - format = " mem [${ram}( ${swap})]($style)" 273 - 274 - [nim] 275 - symbol = "โ–ดโ–ฒโ–ด " 276 - format = " nim [$symbol($version )]($style)" 277 - 278 - [nix_shell] 279 - symbol = "โŠ› " 280 - format = " nix [$symbol$state $name]($style)" 281 - 282 - [spack] 283 - symbol = "โ—‡ " 284 - format = " spack [$symbol$environment]($style)"
···
-64
shared/config/starship-tokyo-night.toml
··· 1 - format = """ 2 - [โ–‘โ–’โ–“](#a3aed2)\ 3 - [ ๎œ‘ ](bg:#a3aed2 fg:#090c0c)\ 4 - [๎‚ด](bg:#769ff0 fg:#a3aed2)\ 5 - $directory\ 6 - [๎‚ด](fg:#769ff0 bg:#394260)\ 7 - $git_branch\ 8 - $git_status\ 9 - [๎‚ด](fg:#394260 bg:#212736)\ 10 - $nodejs\ 11 - $rust\ 12 - $golang\ 13 - $php\ 14 - [๎‚ด](fg:#212736 bg:#1d2230)\ 15 - $time\ 16 - [๎‚ด ](fg:#1d2230)\ 17 - \n$character""" 18 - 19 - [directory] 20 - style = "fg:#e3e5e5 bg:#769ff0" 21 - format = "[ $path ]($style)" 22 - truncation_length = 3 23 - truncation_symbol = "โ€ฆ/" 24 - 25 - [directory.substitutions] 26 - "Documents" = "๓ฐˆ™ " 27 - "Downloads" = "๏€™ " 28 - "Music" = "๏€ " 29 - "Pictures" = "๏€พ " 30 - 31 - [git_branch] 32 - symbol = "๏˜" 33 - style = "bg:#394260" 34 - format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)' 35 - 36 - [git_status] 37 - style = "bg:#394260" 38 - format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)' 39 - 40 - [nodejs] 41 - symbol = "๎œ˜" 42 - style = "bg:#212736" 43 - format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 44 - 45 - [rust] 46 - symbol = "๎žจ" 47 - style = "bg:#212736" 48 - format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 49 - 50 - [golang] 51 - symbol = "๎˜ง" 52 - style = "bg:#212736" 53 - format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 54 - 55 - [php] 56 - symbol = "๎˜ˆ" 57 - style = "bg:#212736" 58 - format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 59 - 60 - [time] 61 - disabled = false 62 - time_format = "%R" # Hour:Minute Format 63 - style = "bg:#1d2230" 64 - format = '[[ ๏บ $time ](fg:#a0a9cb bg:#1d2230)]($style)'
···
-11
shared/default.nix
··· 1 - { ... }: 2 - { 3 - nixpkgs = { 4 - config = { 5 - allowUnfree = true; 6 - allowBroken = true; 7 - allowInsecure = false; 8 - allowUnsupportedSystem = true; 9 - }; 10 - }; 11 - }
···
-6
shared/fonts.nix
··· 1 - { pkgs }: 2 - with pkgs; [ 3 - atkinson-hyperlegible 4 - vollkorn 5 - nerd-fonts.iosevka 6 - ]
···
-193
shared/home-manager.nix
··· 1 - { pkgs, email, name, sshSignKey, ... }: 2 - let 3 - in 4 - { 5 - atuin.enable = true; 6 - 7 - bat.enable = true; 8 - 9 - eza = { 10 - enable = true; 11 - }; 12 - 13 - gh = { 14 - enable = true; 15 - settings = { 16 - git_protocol = "ssh"; 17 - version = 1; 18 - }; 19 - }; 20 - 21 - ghostty = { 22 - enable = true; 23 - enableZshIntegration = true; 24 - installBatSyntax = false; 25 - # Install using Homebrew because of build failure 26 - package = null; 27 - settings = { 28 - font-family = "Iosevka Nerd Font"; 29 - font-size = 14; 30 - theme = "light:Catppuccin Latte,dark:Catppuccin Frappe"; 31 - }; 32 - }; 33 - 34 - git = { 35 - enable = true; 36 - aliases = { 37 - co = "checkout"; 38 - l = "log --graph --decorate --pretty=oneline --abbrev-commit"; 39 - prune = "fetch --prune"; 40 - stash-all = "stash save --include-untracked"; 41 - s = "status"; 42 - }; 43 - ignores = [ 44 - "*.rbc" 45 - "*.sublime-project" 46 - "*.sublime-workspace" 47 - "*.swp" 48 - "*~" 49 - ".DS_Store" 50 - ".cache/" 51 - ".clangd/" 52 - ".direnv/" 53 - ".idea/" 54 - ".svn" 55 - ".vscode" 56 - ".zed" 57 - "__pycache__/" 58 - "build.nosync/" 59 - "compile_commands.json" 60 - ]; 61 - userName = name; 62 - userEmail = email; 63 - lfs.enable = true; 64 - extraConfig = { 65 - init.defaultBranch = "develop"; 66 - pull.ff = true; 67 - push.default = "simple"; 68 - rebase.autoStash = true; 69 - 70 - credential.helper = "osxkeychain"; 71 - 72 - commit.gpgsign = true; 73 - gpg.format = "ssh"; 74 - user.signingkey = sshSignKey; 75 - }; 76 - }; 77 - 78 - jujutsu = { 79 - enable = true; 80 - settings = { 81 - signing = { 82 - behavior = "own"; 83 - backend = "ssh"; 84 - key = sshSignKey; 85 - }; 86 - user = { inherit email name; }; 87 - ui.editor = "zed -w"; 88 - }; 89 - }; 90 - 91 - kitty = { 92 - darwinLaunchOptions = [ "--single-instance" ]; 93 - enable = false; 94 - font = { 95 - name = "Iosevka Nerd Font"; 96 - size = 14; 97 - }; 98 - settings = { 99 - cursor_shape = "underline"; 100 - confirm_os_window_close = 0; 101 - }; 102 - themeFile = "Catppuccin-Latte"; 103 - }; 104 - 105 - ssh = { 106 - enable = true; 107 - matchBlocks = { 108 - optimization = { 109 - hostname = "compute.optimisation-2020.cloud.edu.au"; 110 - user = "dekker1"; 111 - }; 112 - nitrogen = { 113 - hostname = "nitrogen.dekker.one"; 114 - user = "jdekker"; 115 - port = 5821; 116 - }; 117 - m3 = { 118 - hostname = "m3-login1.massive.org.au"; 119 - user = "jdekker"; 120 - }; 121 - }; 122 - }; 123 - 124 - starship = { 125 - enable = true; 126 - settings = (with builtins; fromTOML (readFile ./config/starship-tokyo-night.toml)) // { 127 - # Overrides 128 - }; 129 - }; 130 - 131 - topgrade = { 132 - enable = true; 133 - settings = { 134 - misc.disable = [ 135 - "brew_cask" 136 - # "brew_formula" 137 - "containers" 138 - "gem" 139 - "node" 140 - "pnpm" 141 - "ruby_gems" 142 - "tlmgr" 143 - "vim" 144 - "yarn" 145 - ]; 146 - misc.assume_yes = true; 147 - misc.cleanup = true; 148 - misc.no_retry = true; 149 - pre_commands = { 150 - "Home Manager" = "(cd ~/nix-config/ && nix flake update) && sudo darwin-rebuild switch --flake ~/nix-config#aarch64-darwin"; 151 - }; 152 - }; 153 - }; 154 - 155 - vscode = { 156 - enable = false; 157 - package = pkgs.vscodium; 158 - }; 159 - 160 - zoxide = { 161 - enable = true; 162 - }; 163 - 164 - zsh = { 165 - enable = true; 166 - autocd = true; 167 - defaultKeymap = "viins"; 168 - completionInit = '' 169 - autoload -Uz compinit && compinit 170 - zstyle ':completion:*' matcher-list ''' 'm:{a-zA-Z}={A-Za-z}' 171 - ''; 172 - shellAliases = { 173 - edit = "$VISUAL"; 174 - start = "open"; 175 - less = "bat"; 176 - ls = "eza"; 177 - # set-light-theme = "kitty +kitten themes Catppuccin-Latte"; 178 - # set-dark-theme = "kitty +kitten themes Catppuccin-Frappe"; 179 - }; 180 - sessionVariables = { 181 - # Set default editor 182 - EDITOR = "nvim"; 183 - VISUAL = "zed"; 184 - # CMake settings 185 - CMAKE_EXPORT_COMPILE_COMMANDS = "1"; # output compile-commands.json for clangd 186 - CMAKE_GENERATOR = "Ninja Multi-Config"; # use Ninja generator by default 187 - CMAKE_C_COMPILER_LAUNCHER = "sccache"; 188 - CMAKE_CXX_COMPILER_LAUNCHER = "sccache"; 189 - # Rust settings 190 - RUSTC_WRAPPER = "sccache"; 191 - }; 192 - }; 193 - }
···
-53
shared/packages.nix
··· 1 - { pkgs }: 2 - with pkgs; [ 3 - # General packages for development and system management 4 - just 5 - mas 6 - mdbook 7 - ouch 8 - tectonic 9 - typst 10 - podman 11 - 12 - # Encryption and security tools 13 - gnupg 14 - 15 - # Text and terminal utilities 16 - neovim 17 - zoxide 18 - 19 - # C(++) development tools 20 - bison 21 - clang-tools 22 - cmake 23 - flex 24 - llvm 25 - ninja 26 - sccache 27 - 28 - # Python development tools 29 - uv 30 - 31 - # Rust development tools 32 - rustup 33 - trunk 34 - 35 - # MiniZinc solvers 36 - gecode 37 - or-tools 38 - 39 - # Decision Science tools 40 - clingo 41 - 42 - # Nix development tools 43 - nixpkgs-fmt 44 - nixd 45 - 46 - # Proof tools 47 - elan 48 - 49 - # Node.js development tools 50 - nodePackages.prettier 51 - corepack # install package managers 52 - nodejs 53 - ]
···