@jaspermayone.com's dotfiles

add some configs work on #2

+434
+68
configs/btop.conf
··· 1 + #? Config file for btop v. 1.4.0 2 + 3 + color_theme = "TTY" 4 + theme_background = False 5 + truecolor = True 6 + force_tty = False 7 + presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" 8 + vim_keys = False 9 + rounded_corners = True 10 + graph_symbol = "braille" 11 + graph_symbol_cpu = "default" 12 + graph_symbol_mem = "default" 13 + graph_symbol_net = "default" 14 + graph_symbol_proc = "default" 15 + shown_boxes = "proc mem cpu" 16 + update_ms = 2000 17 + proc_sorting = "memory" 18 + proc_reversed = False 19 + proc_tree = False 20 + proc_colors = True 21 + proc_gradient = True 22 + proc_per_core = False 23 + proc_mem_bytes = False 24 + proc_cpu_graphs = True 25 + proc_info_smaps = False 26 + proc_left = False 27 + proc_filter_kernel = False 28 + proc_aggregate = False 29 + cpu_graph_upper = "Auto" 30 + cpu_graph_lower = "Auto" 31 + cpu_invert_lower = True 32 + cpu_single_graph = False 33 + cpu_bottom = False 34 + show_uptime = True 35 + check_temp = True 36 + cpu_sensor = "Auto" 37 + show_coretemp = True 38 + cpu_core_map = "" 39 + temp_scale = "fahrenheit" 40 + base_10_sizes = False 41 + show_cpu_freq = True 42 + clock_format = "%X" 43 + background_update = True 44 + custom_cpu_name = "" 45 + disks_filter = "" 46 + mem_graphs = True 47 + mem_below_net = False 48 + zfs_arc_cached = True 49 + show_swap = True 50 + swap_disk = True 51 + show_disks = True 52 + only_physical = True 53 + use_fstab = True 54 + zfs_hide_datasets = False 55 + disk_free_priv = False 56 + show_io_stat = True 57 + io_mode = False 58 + io_graph_combined = False 59 + io_graph_speeds = "" 60 + net_download = 100 61 + net_upload = 100 62 + net_auto = True 63 + net_sync = True 64 + net_iface = "" 65 + show_battery = True 66 + selected_battery = "Auto" 67 + show_battery_watts = True 68 + log_level = "WARNING"
+4
configs/espanso/config/default.yml
··· 1 + # espanso configuration file 2 + # yaml-language-server: $schema=https://raw.githubusercontent.com/espanso/espanso/dev/schemas/config.schema.json 3 + 4 + # For a complete introduction, visit the official docs at: https://espanso.org/docs/
+41
configs/espanso/match/base.yml
··· 1 + # espanso match file - PUBLIC matches only 2 + # Sensitive matches are in secrets.yml (encrypted with agenix) 3 + # For a complete introduction, visit the official docs at: https://espanso.org/docs/ 4 + 5 + matches: 6 + # SSH public key (public by definition) 7 + - trigger: ";ssh" 8 + replace: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHm7lo7umraewipgQu1Pifmoo/V8jYGDHjBTmt+7SOCe jsp@remus" 9 + 10 + # Social (public links) 11 + - trigger: ";linkedin" 12 + replace: "https://www.linkedin.com/in/jaspermayone/" 13 + 14 + # Organizations (public info) 15 + - triggers: [";pwlmission"] 16 + label: "Patchwork Mission" 17 + replace: "Empowering everyone to explore STEAM through a makerspace community that lowers barriers, welcomes every interest, and turns ideas into reality." 18 + 19 + - triggers: [";krn"] 20 + replace: "taciturnaxolotl" 21 + 22 + # Symbols 23 + - trigger: ":euro" 24 + replace: "\u20ac" 25 + 26 + - trigger: ":div" 27 + replace: <div>$|$</div> 28 + 29 + # Commands/Scripts 30 + - triggers: [";upd"] 31 + replace: "curl -sSL https://raw.githubusercontent.com/jaspermayone/scripts/refs/heads/main/upgrade-system.sh | sudo bash " 32 + 33 + - triggers: [";docker"] 34 + replace: "curl -sSL https://get.docker.com | sh" 35 + 36 + # Misc 37 + - triggers: [";mp"] 38 + replace: "MicroPico" 39 + 40 + - triggers: [";cf"] 41 + replace: "doug.ns.cloudflare.com\nsaanvi.ns.cloudflare.com"
+9
configs/karabiner.json
··· 1 + { 2 + "profiles": [ 3 + { 4 + "name": "Default profile", 5 + "selected": true, 6 + "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" } 7 + } 8 + ] 9 + }
+1
darwin/default.nix
··· 60 60 # GUI apps (casks) 61 61 casks = [ 62 62 "discord" 63 + "espanso" 63 64 "raycast" 64 65 ]; 65 66
+1
home/default.nix
··· 8 8 ../modules/shell.nix 9 9 ../modules/ssh.nix 10 10 ../modules/git.nix 11 + ../modules/configs.nix 11 12 ]; 12 13 13 14 home.stateVersion = "24.05";
+80
modules/configs.nix
··· 1 + # Centralized application configs 2 + # Manages configs for espanso, btop, gh, wakatime, etc. 3 + { config, lib, pkgs, isDarwin, ... }: 4 + 5 + let 6 + # Paths for secrets 7 + secretsDir = ../secrets; 8 + dotsDir = "/Users/jsp/dev/dots"; # Adjust if needed 9 + in 10 + { 11 + # btop configuration 12 + xdg.configFile."btop/btop.conf".source = ../configs/btop.conf; 13 + 14 + # Note: gh CLI is configured in modules/git.nix via programs.gh 15 + 16 + # Karabiner configuration (keyboard remapping) - macOS only 17 + xdg.configFile."karabiner/karabiner.json" = lib.mkIf isDarwin { 18 + source = ../configs/karabiner.json; 19 + }; 20 + 21 + # Espanso configuration 22 + home.file = lib.mkMerge [ 23 + # macOS espanso paths 24 + (lib.mkIf isDarwin { 25 + "Library/Application Support/espanso/config/default.yml".source = ../configs/espanso/config/default.yml; 26 + "Library/Application Support/espanso/match/base.yml".source = ../configs/espanso/match/base.yml; 27 + }) 28 + 29 + # Linux espanso paths 30 + (lib.mkIf (!isDarwin) { 31 + ".config/espanso/config/default.yml".source = ../configs/espanso/config/default.yml; 32 + ".config/espanso/match/base.yml".source = ../configs/espanso/match/base.yml; 33 + }) 34 + ]; 35 + 36 + # Activation script to decrypt secrets for user configs 37 + # This runs on every home-manager activation 38 + home.activation.decryptUserSecrets = lib.hm.dag.entryAfter ["writeBoundary"] '' 39 + SECRETS_DIR="${dotsDir}/secrets" 40 + AGENIX="${pkgs.age}/bin/age" 41 + SSH_KEY="$HOME/.ssh/id_ed25519" 42 + 43 + # Only proceed if we have the SSH key for decryption 44 + if [ -f "$SSH_KEY" ]; then 45 + # Decrypt espanso secrets 46 + ESPANSO_SECRETS="$SECRETS_DIR/espanso-secrets.age" 47 + if [ -f "$ESPANSO_SECRETS" ]; then 48 + ${if isDarwin then '' 49 + ESPANSO_DIR="$HOME/Library/Application Support/espanso/match" 50 + '' else '' 51 + ESPANSO_DIR="$HOME/.config/espanso/match" 52 + ''} 53 + mkdir -p "$ESPANSO_DIR" 54 + $AGENIX -d -i "$SSH_KEY" "$ESPANSO_SECRETS" > "$ESPANSO_DIR/secrets.yml" 2>/dev/null || true 55 + fi 56 + 57 + # Decrypt wakatime API key and merge with config 58 + WAKATIME_SECRET="$SECRETS_DIR/wakatime-api-key.age" 59 + if [ -f "$WAKATIME_SECRET" ]; then 60 + API_KEY=$($AGENIX -d -i "$SSH_KEY" "$WAKATIME_SECRET" 2>/dev/null || echo "") 61 + if [ -n "$API_KEY" ]; then 62 + cat > "$HOME/.wakatime.cfg" << EOF 63 + [settings] 64 + api_url = https://waka.hogwarts.dev/api 65 + api_key = $API_KEY 66 + debug = false 67 + status_bar_coding_activity = true 68 + status_bar_enabled = false 69 + EOF 70 + fi 71 + fi 72 + 73 + # Decrypt npmrc (contains registry auth tokens) 74 + NPMRC_SECRET="$SECRETS_DIR/npmrc.age" 75 + if [ -f "$NPMRC_SECRET" ]; then 76 + $AGENIX -d -i "$SSH_KEY" "$NPMRC_SECRET" > "$HOME/.npmrc" 2>/dev/null || true 77 + fi 78 + fi 79 + ''; 80 + }
+199
rc/.p10k.zsh
··· 1 + # Generated by Powerlevel10k configuration wizard on 2025-01-27 at 13:06 EST. 2 + # Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 7533. 3 + # Wizard options: nerdfont-v3 + powerline, small icons, pure, original, rprompt, 4 + # 2 lines, sparse, transient_prompt, instant_prompt=verbose. 5 + # Type `p10k configure` to generate another config. 6 + # 7 + # Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure). 8 + # 9 + # Differences from Pure: 10 + # 11 + # - Git: 12 + # - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state. 13 + # - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`). 14 + # 15 + # Apart from the differences listed above, the replication of Pure prompt is exact. This includes 16 + # even the questionable parts. For example, just like in Pure, there is no indication of Git status 17 + # being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt 18 + # doesn't fit on one line, it wraps around with no attempt to shorten it. 19 + # 20 + # If you like the general style of Pure but not particularly attached to all its quirks, type 21 + # `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking 22 + # advantage of Powerlevel10k features that aren't present in Pure. 23 + 24 + # Temporarily change options. 25 + 'builtin' 'local' '-a' 'p10k_config_opts' 26 + [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') 27 + [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') 28 + [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') 29 + 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' 30 + 31 + () { 32 + emulate -L zsh -o extended_glob 33 + 34 + # Unset all configuration options. 35 + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' 36 + 37 + # Zsh >= 5.1 is required. 38 + [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return 39 + 40 + # Prompt colors. 41 + local grey='242' 42 + local red='1' 43 + local yellow='3' 44 + local blue='4' 45 + local magenta='5' 46 + local cyan='6' 47 + local white='7' 48 + 49 + # Left prompt segments. 50 + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( 51 + # =========================[ Line #1 ]========================= 52 + # context # user@host 53 + dir # current directory 54 + vcs # git status 55 + # command_execution_time # previous command duration 56 + # =========================[ Line #2 ]========================= 57 + newline # \n 58 + # virtualenv # python virtual environment 59 + prompt_char # prompt symbol 60 + ) 61 + 62 + # Right prompt segments. 63 + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( 64 + # =========================[ Line #1 ]========================= 65 + command_execution_time # previous command duration 66 + virtualenv # python virtual environment 67 + context # user@host 68 + # time # current time 69 + # =========================[ Line #2 ]========================= 70 + newline # \n 71 + ) 72 + 73 + # Basic style options that define the overall prompt look. 74 + typeset -g POWERLEVEL9K_BACKGROUND= # transparent background 75 + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace 76 + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space 77 + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol 78 + typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons 79 + 80 + # Add an empty line before each prompt except the first. This doesn't emulate the bug 81 + # in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar. 82 + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true 83 + 84 + # Magenta prompt symbol if the last command succeeded. 85 + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$magenta 86 + # Red prompt symbol if the last command failed. 87 + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red 88 + # Default prompt symbol. 89 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' 90 + # Prompt symbol in command vi mode. 91 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' 92 + # Prompt symbol in visual vi mode is the same as in command mode. 93 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='❮' 94 + # Prompt symbol in overwrite vi mode is the same as in command mode. 95 + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false 96 + 97 + # Grey Python Virtual Environment. 98 + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey 99 + # Don't show Python version. 100 + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false 101 + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= 102 + 103 + # Blue current directory. 104 + typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue 105 + 106 + # Context format when root: user@host. The first part white, the rest grey. 107 + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$white}%n%f%F{$grey}@%m%f" 108 + # Context format when not root: user@host. The whole thing grey. 109 + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$grey}%n@%m%f" 110 + # Don't show context unless root or in SSH. 111 + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION= 112 + 113 + # Show previous command duration only if it's >= 5s. 114 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5 115 + # Don't show fractional seconds. Thus, 7s rather than 7.3s. 116 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 117 + # Duration format: 1d 2h 3m 4s. 118 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' 119 + # Yellow previous command duration. 120 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow 121 + 122 + # Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones. 123 + typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey 124 + 125 + # Disable async loading indicator to make directories that aren't Git repositories 126 + # indistinguishable from large Git repositories without known state. 127 + typeset -g POWERLEVEL9K_VCS_LOADING_TEXT= 128 + 129 + # Don't wait for Git status even for a millisecond, so that prompt always updates 130 + # asynchronously when Git state changes. 131 + typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0 132 + 133 + # Cyan ahead/behind arrows. 134 + typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan 135 + # Don't show remote branch, current tag or stashes. 136 + typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind) 137 + # Don't show the branch icon. 138 + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= 139 + # When in detached HEAD state, show @commit where branch normally goes. 140 + typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@' 141 + # Don't show staged, unstaged, untracked indicators. 142 + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON= 143 + # Show '*' when there are staged, unstaged or untracked files. 144 + typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*' 145 + # Show '⇣' if local branch is behind remote. 146 + typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣' 147 + # Show '⇡' if local branch is ahead of remote. 148 + typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡' 149 + # Don't show the number of commits next to the ahead/behind arrows. 150 + typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1 151 + # Remove space between '⇣' and '⇡' and all trailing spaces. 152 + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }' 153 + 154 + # Grey current time. 155 + typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey 156 + # Format for the current time: 09:51:02. See `man 3 strftime`. 157 + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' 158 + # If set to true, time will update when you hit enter. This way prompts for the past 159 + # commands will contain the start times of their commands rather than the end times of 160 + # their preceding commands. 161 + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false 162 + 163 + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt 164 + # when accepting a command line. Supported values: 165 + # 166 + # - off: Don't change prompt when accepting a command line. 167 + # - always: Trim down prompt when accepting a command line. 168 + # - same-dir: Trim down prompt when accepting a command line unless this is the first command 169 + # typed after changing current working directory. 170 + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always 171 + 172 + # Instant prompt mode. 173 + # 174 + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found 175 + # it incompatible with your zsh configuration files. 176 + # - quiet: Enable instant prompt and don't print warnings when detecting console output 177 + # during zsh initialization. Choose this if you've read and understood 178 + # https://github.com/romkatv/powerlevel10k#instant-prompt. 179 + # - verbose: Enable instant prompt and print a warning when detecting console output during 180 + # zsh initialization. Choose this if you've never tried instant prompt, haven't 181 + # seen the warning, or if you are unsure what this all means. 182 + typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose 183 + 184 + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. 185 + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload 186 + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you 187 + # really need it. 188 + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true 189 + 190 + # If p10k is already loaded, reload configuration. 191 + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. 192 + (( ! $+functions[p10k] )) || p10k reload 193 + } 194 + 195 + # Tell `p10k configure` which file it should overwrite. 196 + typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} 197 + 198 + (( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} 199 + 'builtin' 'unset' 'p10k_config_opts'
+2
rc/.yarnrc
··· 1 + # Yarn configuration 2 + # lastUpdateCheck is managed by yarn itself
+5
secrets/espanso-secrets.age
··· 1 + age-encryption.org/v1 2 + -> ssh-ed25519 1uIO/w Zehp236pAaJ2GD3UUHZpRSDnGAl3rOrRaAVItx93uBw 3 + dWEmfovVVhx9WVkFrlzHsLCQ3uQl5AvNgSPOP2QtMOM 4 + --- 9hTRWQB4rPaWJtLoH1QUjl0nYiZXLDT3tTPV5FtfwZc 5 + �"�����0�m�)^����VS��j>���s
+6
secrets/npmrc.age
··· 1 + age-encryption.org/v1 2 + -> ssh-ed25519 1uIO/w suN/VSXk4OcLaOD9JrEt5Ptld6cBvEF9Lbr0SjT1AGI 3 + wyMCuKAUEr1dmbptzT5IPNlgzTAFI8AfRzHruALaN84 4 + --- 2rl0MtimAp8+w4nKIPdT77gXKBLyLBGfcyhM2TLcNbI 5 + ��N�� �f��>9T�Xc����v5�*bN`��sd����ZU�2��d����7�Q���7}�3���n,0� X��e�z`��ӎ������=�O����i 3�Y��zC�Ө�R�qT(1S�С��M;l� 6 + q�鍓�l^��Y��7Da蝴�Eq����4Sè��"Z�
+12
secrets/secrets.nix
··· 45 45 # GitHub token for knot-sync service 46 46 # Format: GITHUB_TOKEN=ghp_xxxxx 47 47 "github-token.age".publicKeys = all; 48 + 49 + # Espanso secrets (sensitive text expansions) 50 + # Contains: email addresses, EINs, personal addresses 51 + "espanso-secrets.age".publicKeys = allUsers; 52 + 53 + # Wakatime API key 54 + # Format: api_key = xxxxx 55 + "wakatime-api-key.age".publicKeys = allUsers; 56 + 57 + # NPM registry tokens 58 + # Contains: npmjs.org and GitHub packages auth tokens 59 + "npmrc.age".publicKeys = allUsers; 48 60 }
+6
secrets/wakatime-api-key.age
··· 1 + age-encryption.org/v1 2 + -> ssh-ed25519 1uIO/w KQGHESnmZq9SRbZzY37HrJYozuTBrQwsgYogbCR9MFo 3 + nBvjb5ILKu1dxR5heo1mLcRgls5TekDTb1tshqxIQwI 4 + --- vl6Y6cbIZLxndvb5ypvSC9xi23kpdYGBKYOJAtCespc 5 + 3�3��I9�X·ZX����Z��n���� ˂���O1m ����r�>-��� 6 + ���q?!d��"p���З"