From 2f6d4e1d3c0a79e2260753b92ee0399ed759122b Mon Sep 17 00:00:00 2001 From: Daniel Lundin Date: Fri, 2 Aug 2024 11:12:36 +0200 Subject: [PATCH] Migrate to home-manager --- .config/alacritty/alacritty.yml | 77 - .config/atuin/config.toml | 205 - .config/autostart/gnome-keyring-ssh.desktop | 157 - .config/bat/config | 3 - .config/bat/themes/Catppuccin Mocha.tmTheme | 2021 --------- .config/broot/conf.hjson | 40 - .config/broot/launcher/bash/br | 1 - .config/broot/launcher/installed-v4 | 4 - .config/broot/select.hjson | 17 - .config/broot/skins/dieter-light.hjson | 84 - .config/broot/verbs.hjson | 184 - .config/buildkit/buildkitd.toml | 7 - .config/chrome-beta-flags.conf | 1 - .config/contour/contour.yml | 769 ---- .config/efm-langserver/config.yaml | 14 - .config/environment.d/difftastic.conf | 1 - .config/environment.d/docker.conf | 1 - .config/environment.d/golang.conf | 1 - .config/environment.d/mozilla.conf | 2 - .config/environment.d/otel.conf | 3 - .config/environment.d/ssh.conf | 1 - .config/fish/conf.d/abbr.fish | 6 - .config/fish/conf.d/aliases.fish | 10 - .config/fish/conf.d/prompt.fish | 91 - .config/fish/conf.d/semantic-prompt.fish | 56 - .config/fish/conf.d/task.fish | 37 - .config/fish/conf.d/zoxide.fish | 100 - .config/fish/config.fish | 71 - .config/fish/fish_variables | 48 - .config/fish/themes/Catppuccin Mocha.theme | 30 - .config/git/allowed_signers | 3 - .config/git/signing-key.sh | 3 - .config/helix/config.toml | 52 - .config/helix/languages.toml | 46 - .config/helix/themes/sumi-e.toml | 193 - .config/k9s/config.yaml | 42 - .config/k9s/plugins.yaml | 22 - .config/k9s/skins/dieter.yaml | 76 - .config/nerdctl/nerdctl.toml | 3 - .config/nvim/lazyvim.json | 24 - .config/nvim/lua/plugins/editor.lua | 71 - .config/nvim/lua/plugins/overseer.lua | 90 - .config/nvim/spell/en.utf-8.add | 10 - .config/nvim/spell/en.utf-8.add.spl | Bin 144 -> 0 bytes .config/paru/paru.conf | 8 - .config/rg/rg.conf | 10 - .config/sapling/sapling.conf | 22 - .config/starship.toml | 77 - .config/systemd/user/opener@.service | 11 - .config/systemd/user/tmux.service | 10 - .config/vconsole/personal.map | 3 - .config/zsh-abbr/user-abbreviations | 13 - .envrc | 2 + .gitconfig | 150 - .gitignore | 14 - .gnupg/gpg-agent.conf | 4 - .gnupg/gpg.conf | 2 - .inputrc | 11 - .jjconfig.toml | 21 - .lessfilter | 46 - .../share/applications/firefox-arity.desktop | 13 - .../share/applications/firefox-work.desktop | 13 - .../google-chrome-beta-client.desktop | 11 - .../google-chrome-beta-private.desktop | 11 - .../google-chrome-beta-work.desktop | 11 - .local/share/applications/meet.desktop | 9 - .local/share/applications/plex.desktop | 9 - .local/share/applications/spotify.desktop | 11 - .../wezterm-dev-secondary.desktop | 10 - .local/share/applications/wezterm-dev.desktop | 10 - .../share/applications/wezterm-local.desktop | 10 - .../share/applications/wezterm-nemo.desktop | 10 - .../share/applications/youtube-music.desktop | 9 - .ssh/config | 35 - .ssh/rc | 4 - .tmux.conf | 96 - .vault | 2 - README.md | 3 + bin/git-st | 36 - bin/git-wtf | 364 -- bin/ktoolbox | 1 - bin/pst | 15 - bin/starship-sl-status | 26 - bin/tmux-build-helper | 4 - bin/tmux-edit-helper | 1 - bin/tmux-edit-history | 4 - bin/tmux-hx-helper | 44 - bin/tmux-nvim-helper | 46 - bin/tmux-shortcut | 20 - bin/tpm2-pkcs11-init-ssh.sh | 24 - bin/url-copy | 2 - bin/vault-token-helper.sh | 55 - bin/wezterm-edit-helper | 25 - bin/xdg-open | 11 - common/atuin.nix | 40 + common/broot.nix | 63 + common/default.nix | 21 + common/devel.nix | 24 + common/fish.nix | 122 + common/gnome.nix | 194 + common/k8s.nix | 176 + common/nix.nix | 15 + common/nvim.nix | 19 + common/scripts.nix | 17 + common/ssh.nix | 14 + common/utils.nix | 60 + common/vcs.nix | 166 + common/web.nix | 22 + common/wezterm.nix | 11 + files/config/fish/config.fish | 59 + files/config/fish/go-task.fish | 37 + files/config/fish/jj.fish | 338 ++ files/config/fish/semantic-prompt.fish | 55 + files/config/fish/vcs.fish | 72 + {.config => files/config}/nvim/init.lua | 0 .../config}/nvim/lua/config/autocmds.lua | 0 .../config}/nvim/lua/config/keymaps.lua | 0 .../config}/nvim/lua/config/lazy.lua | 30 +- .../config}/nvim/lua/config/options.lua | 22 - .../config}/nvim/lua/plugins/coding.lua | 0 .../config}/nvim/lua/plugins/colorscheme.lua | 4 +- files/config/nvim/lua/plugins/editor.lua | 95 + .../config}/nvim/lua/plugins/extras.lua | 0 .../config}/nvim/lua/plugins/formatting.lua | 1 + .../config}/nvim/lua/plugins/incline.lua | 0 .../config}/nvim/lua/plugins/lsp.lua | 0 .../config}/nvim/lua/plugins/treesitter.lua | 0 .../config}/nvim/lua/plugins/ui.lua | 18 +- {.config => files/config}/wezterm/wezterm.lua | 34 +- files/scripts/git-signing-key | 3 + {bin => files/scripts}/test-term.sh | 4 + files/scripts/wezterm-open-url | 4 + flake.lock | 48 + flake.nix | 72 + justfile | 17 + overlays/default.nix | 21 + pkgs/default.nix | 5 + pkgs/gnome-ssh-askpass4/default.nix | 48 + pkgs/jujutsu-openssh/Cargo.lock | 3877 +++++++++++++++++ pkgs/jujutsu-openssh/default.nix | 90 + pkgs/lazyjj/default.nix | 29 + users/dln/desktop.nix | 67 + users/dln/dinky.nix | 14 + users/dln/home.nix | 140 + users/dln/nemo.nix | 9 + users/lsjostro/home.nix | 40 + users/lsjostro/nemo.nix | 6 + 147 files changed, 6181 insertions(+), 6078 deletions(-) delete mode 100644 .config/alacritty/alacritty.yml delete mode 100644 .config/atuin/config.toml delete mode 100644 .config/autostart/gnome-keyring-ssh.desktop delete mode 100644 .config/bat/config delete mode 100644 .config/bat/themes/Catppuccin Mocha.tmTheme delete mode 100644 .config/broot/conf.hjson delete mode 120000 .config/broot/launcher/bash/br delete mode 100644 .config/broot/launcher/installed-v4 delete mode 100644 .config/broot/select.hjson delete mode 100644 .config/broot/skins/dieter-light.hjson delete mode 100644 .config/broot/verbs.hjson delete mode 100644 .config/buildkit/buildkitd.toml delete mode 100644 .config/chrome-beta-flags.conf delete mode 100644 .config/contour/contour.yml delete mode 100644 .config/efm-langserver/config.yaml delete mode 100644 .config/environment.d/difftastic.conf delete mode 100644 .config/environment.d/docker.conf delete mode 100644 .config/environment.d/golang.conf delete mode 100644 .config/environment.d/mozilla.conf delete mode 100644 .config/environment.d/otel.conf delete mode 100644 .config/environment.d/ssh.conf delete mode 100644 .config/fish/conf.d/abbr.fish delete mode 100644 .config/fish/conf.d/aliases.fish delete mode 100644 .config/fish/conf.d/prompt.fish delete mode 100644 .config/fish/conf.d/semantic-prompt.fish delete mode 100644 .config/fish/conf.d/task.fish delete mode 100644 .config/fish/conf.d/zoxide.fish delete mode 100644 .config/fish/config.fish delete mode 100644 .config/fish/fish_variables delete mode 100644 .config/fish/themes/Catppuccin Mocha.theme delete mode 100644 .config/git/allowed_signers delete mode 100755 .config/git/signing-key.sh delete mode 100644 .config/helix/config.toml delete mode 100644 .config/helix/languages.toml delete mode 100644 .config/helix/themes/sumi-e.toml delete mode 100644 .config/k9s/config.yaml delete mode 100644 .config/k9s/plugins.yaml delete mode 100644 .config/k9s/skins/dieter.yaml delete mode 100644 .config/nerdctl/nerdctl.toml delete mode 100644 .config/nvim/lazyvim.json delete mode 100644 .config/nvim/lua/plugins/editor.lua delete mode 100644 .config/nvim/lua/plugins/overseer.lua delete mode 100644 .config/nvim/spell/en.utf-8.add delete mode 100644 .config/nvim/spell/en.utf-8.add.spl delete mode 100644 .config/paru/paru.conf delete mode 100644 .config/rg/rg.conf delete mode 100644 .config/sapling/sapling.conf delete mode 100644 .config/starship.toml delete mode 100644 .config/systemd/user/opener@.service delete mode 100644 .config/systemd/user/tmux.service delete mode 100644 .config/vconsole/personal.map delete mode 100644 .config/zsh-abbr/user-abbreviations create mode 100644 .envrc delete mode 100644 .gitconfig delete mode 100644 .gitignore delete mode 100644 .gnupg/gpg-agent.conf delete mode 100644 .gnupg/gpg.conf delete mode 100644 .inputrc delete mode 100644 .jjconfig.toml delete mode 100755 .lessfilter delete mode 100644 .local/share/applications/firefox-arity.desktop delete mode 100644 .local/share/applications/firefox-work.desktop delete mode 100644 .local/share/applications/google-chrome-beta-client.desktop delete mode 100644 .local/share/applications/google-chrome-beta-private.desktop delete mode 100644 .local/share/applications/google-chrome-beta-work.desktop delete mode 100644 .local/share/applications/meet.desktop delete mode 100644 .local/share/applications/plex.desktop delete mode 100644 .local/share/applications/spotify.desktop delete mode 100644 .local/share/applications/wezterm-dev-secondary.desktop delete mode 100644 .local/share/applications/wezterm-dev.desktop delete mode 100644 .local/share/applications/wezterm-local.desktop delete mode 100644 .local/share/applications/wezterm-nemo.desktop delete mode 100644 .local/share/applications/youtube-music.desktop delete mode 100644 .ssh/config delete mode 100755 .ssh/rc delete mode 100644 .tmux.conf delete mode 100644 .vault create mode 100644 README.md delete mode 100755 bin/git-st delete mode 100755 bin/git-wtf delete mode 120000 bin/ktoolbox delete mode 100755 bin/pst delete mode 100755 bin/starship-sl-status delete mode 100755 bin/tmux-build-helper delete mode 120000 bin/tmux-edit-helper delete mode 100755 bin/tmux-edit-history delete mode 100755 bin/tmux-hx-helper delete mode 100755 bin/tmux-nvim-helper delete mode 100755 bin/tmux-shortcut delete mode 100755 bin/tpm2-pkcs11-init-ssh.sh delete mode 100755 bin/url-copy delete mode 100755 bin/vault-token-helper.sh delete mode 100755 bin/wezterm-edit-helper delete mode 100755 bin/xdg-open create mode 100644 common/atuin.nix create mode 100644 common/broot.nix create mode 100644 common/default.nix create mode 100644 common/devel.nix create mode 100644 common/fish.nix create mode 100644 common/gnome.nix create mode 100644 common/k8s.nix create mode 100644 common/nix.nix create mode 100644 common/nvim.nix create mode 100644 common/scripts.nix create mode 100644 common/ssh.nix create mode 100644 common/utils.nix create mode 100644 common/vcs.nix create mode 100644 common/web.nix create mode 100644 common/wezterm.nix create mode 100644 files/config/fish/config.fish create mode 100644 files/config/fish/go-task.fish create mode 100644 files/config/fish/jj.fish create mode 100644 files/config/fish/semantic-prompt.fish create mode 100644 files/config/fish/vcs.fish rename {.config => files/config}/nvim/init.lua (100%) rename {.config => files/config}/nvim/lua/config/autocmds.lua (100%) rename {.config => files/config}/nvim/lua/config/keymaps.lua (100%) rename {.config => files/config}/nvim/lua/config/lazy.lua (57%) rename {.config => files/config}/nvim/lua/config/options.lua (60%) rename {.config => files/config}/nvim/lua/plugins/coding.lua (100%) rename {.config => files/config}/nvim/lua/plugins/colorscheme.lua (52%) create mode 100644 files/config/nvim/lua/plugins/editor.lua rename {.config => files/config}/nvim/lua/plugins/extras.lua (100%) rename {.config => files/config}/nvim/lua/plugins/formatting.lua (91%) rename {.config => files/config}/nvim/lua/plugins/incline.lua (100%) rename {.config => files/config}/nvim/lua/plugins/lsp.lua (100%) rename {.config => files/config}/nvim/lua/plugins/treesitter.lua (100%) rename {.config => files/config}/nvim/lua/plugins/ui.lua (90%) rename {.config => files/config}/wezterm/wezterm.lua (91%) create mode 100755 files/scripts/git-signing-key rename {bin => files/scripts}/test-term.sh (96%) create mode 100755 files/scripts/wezterm-open-url create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 justfile create mode 100644 overlays/default.nix create mode 100644 pkgs/default.nix create mode 100644 pkgs/gnome-ssh-askpass4/default.nix create mode 100644 pkgs/jujutsu-openssh/Cargo.lock create mode 100644 pkgs/jujutsu-openssh/default.nix create mode 100644 pkgs/lazyjj/default.nix create mode 100644 users/dln/desktop.nix create mode 100644 users/dln/dinky.nix create mode 100644 users/dln/home.nix create mode 100644 users/dln/nemo.nix create mode 100644 users/lsjostro/home.nix create mode 100644 users/lsjostro/nemo.nix diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml deleted file mode 100644 index eb8b30f..0000000 --- a/.config/alacritty/alacritty.yml +++ /dev/null @@ -1,77 +0,0 @@ -window: - decorations: none - startup_mode: Maximized - -font: - normal: - family: Iosevka Term SS09 - style: Regular - - bold: - family: Iosevka Term SS09 - style: Semibold - - italic: - family: Iosevka Term Curly Slab - style: Light Italic - - bold_italic: - family: Iosevka SS15 - style: Extralight Italic - - size: 10 - - offset: - x: 0 - y: 3 - - glyph_offset: - x: 0 - y: 2 - -cursor: - # Values for `style`: - # - ▇ Block - # - _ Underline - # - | Beam - style: Block - vi_mode_style: Beam - unfocused_hollow: true - thickness: 0.15 - -mouse: - hide_when_typing: true - # url: - # launcher: - # program: /home/dln/bin/url-copy - -colors: - primary: - background: '#fcfcfc' - foreground: '#000000' - - normal: - black: '#212121' - red: '#b7141e' - green: '#457b23' - yellow: '#f5971d' - blue: '#134eb2' - magenta: '#550087' - cyan: '#0e707c' - white: '#eeeeee' - bright: - black: '#424242' - red: '#e83a3f' - green: '#7aba39' - yellow: '#fee92e' - blue: '#53a4f3' - magenta: '#a94dbb' - cyan: '#26bad1' - white: '#d8d8d8' - -key_bindings: -- { key: V, mods: Alt, action: Paste } -- { key: C, mods: Alt, action: Copy } -- { key: V, mods: Shift|Alt, action: Paste } -- { key: C, mods: Shift|Alt, action: Copy } -- { key: Return, mods: Alt, action: ToggleFullscreen } diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml deleted file mode 100644 index 0768eb6..0000000 --- a/.config/atuin/config.toml +++ /dev/null @@ -1,205 +0,0 @@ -## where to store your database, default is your system data directory -## linux/mac: ~/.local/share/atuin/history.db -## windows: %USERPROFILE%/.local/share/atuin/history.db -# db_path = "~/.history.db" - -## where to store your encryption key, default is your system data directory -## linux/mac: ~/.local/share/atuin/key -## windows: %USERPROFILE%/.local/share/atuin/key -# key_path = "~/.key" - -## where to store your auth session token, default is your system data directory -## linux/mac: ~/.local/share/atuin/session -## windows: %USERPROFILE%/.local/share/atuin/session -# session_path = "~/.session" - -## date format used, either "us" or "uk" -# dialect = "us" - -## default timezone to use when displaying time -## either "l", "local" to use the system's current local timezone, or an offset -## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]" -## for example: "+9", "-05", "+03:30", "-01:23:45", etc. -# timezone = "local" - -## enable or disable automatic sync -# auto_sync = true - -## enable or disable automatic update checks -# update_check = true - -## address of the sync server -# sync_address = "https://api.atuin.sh" - -## how often to sync history. note that this is only triggered when a command -## is ran, so sync intervals may well be longer -## set it to 0 to sync after every command -# sync_frequency = "10m" - -## which search mode to use -## possible values: prefix, fulltext, fuzzy, skim -# search_mode = "fuzzy" - -## which filter mode to use -## possible values: global, host, session, directory -# filter_mode = "global" -#filter_mode = "session" - -## With workspace filtering enabled, Atuin will filter for commands executed -## in any directory within a git repository tree (default: false) -# workspaces = false -# workspaces = true - -## which filter mode to use when atuin is invoked from a shell up-key binding -## the accepted values are identical to those of "filter_mode" -## leave unspecified to use same mode set in "filter_mode" -# filter_mode_shell_up_key_binding = "global" -filter_mode_shell_up_key_binding = "session" - -## which search mode to use when atuin is invoked from a shell up-key binding -## the accepted values are identical to those of "search_mode" -## leave unspecified to use same mode set in "search_mode" -# search_mode_shell_up_key_binding = "fuzzy" -search_mode_shell_up_key_binding = "prefix" - -## which style to use -## possible values: auto, full, compact -# style = "auto" -style = "compact" - -## the maximum number of lines the interface should take up -## set it to 0 to always go full screen -# inline_height = 0 -inline_height = 6 - -## Invert the UI - put the search bar at the top , Default to `false` -# invert = false -# invert = true - -## enable or disable showing a preview of the selected command -## useful when the command is longer than the terminal width and is cut off -# show_preview = false - -## what to do when the escape key is pressed when searching -## possible values: return-original, return-query -# exit_mode = "return-original" - -## possible values: emacs, subl -# word_jump_mode = "emacs" - -## characters that count as a part of a word -# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" - -## number of context lines to show when scrolling by pages -# scroll_context_lines = 1 - -## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts -## alt-0 .. alt-9 -# ctrl_n_shortcuts = false - -ctrl_n_shortcuts = true - -## default history list format - can also be specified with the --format arg -# history_format = "{time}\t{command}\t{duration}" - -## prevent commands matching any of these regexes from being written to history. -## Note that these regular expressions are unanchored, i.e. if they don't start -## with ^ or end with $, they'll match anywhere in the command. -## For details on the supported regular expression syntax, see -## https://docs.rs/regex/latest/regex/#syntax -# history_filter = [ -# "^secret-cmd", -# "^innocuous-cmd .*--secret=.+" -# ] - -history_filter = [] - -## prevent commands run with cwd matching any of these regexes from being written -## to history. Note that these regular expressions are unanchored, i.e. if they don't -## start with ^ or end with $, they'll match anywhere in CWD. -## For details on the supported regular expression syntax, see -## https://docs.rs/regex/latest/regex/#syntax -# cwd_filter = [ -# "^/very/secret/area" -# ] - -cwd_filter = ["^~/media", "^/home/dln/media"] - -## Configure the maximum height of the preview to show. -## Useful when you have long scripts in your history that you want to distinguish -## by more than the first few lines. -# max_preview_height = 4 - -## Configure whether or not to show the help row, which includes the current Atuin -## version (and whether an update is available), a keymap hint, and the total -## amount of commands in your history. -# show_help = true -show_help = false - -## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include -## 1. AWS key id -## 2. Github pat (old and new) -## 3. Slack oauth tokens (bot, user) -## 4. Slack webhooks -## 5. Stripe live/test keys -# secrets_filter = true - -## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit. -# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise. -# enter_accept = false -enter_accept = true - - -## Defaults to "emacs". This specifies the keymap on the startup of `atuin -## search`. If this is set to "auto", the startup keymap mode in the Atuin -## search is automatically selected based on the shell's keymap where the -## keybinding is defined. If this is set to "emacs", "vim-insert", or -## "vim-normal", the startup keymap mode in the Atuin search is forced to be -## the specified one. -# keymap_mode = "auto" - -## Cursor style in each keymap mode. If specified, the cursor style is changed -## in entering the cursor shape. Available values are "default" and -## "{blink,steady}-{block,underilne,bar}". -# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" } - -# network_connect_timeout = 5 -# network_timeout = 5 - -## Timeout (in seconds) for acquiring a local database connection (sqlite) -# local_timeout = 5 - -## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. -## Alternatively, set env NO_MOTION=true -# prefers_reduced_motion = false - -prefers_reduced_motion = true - -#[stats] -# Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl -#common_subcommands = [ -# "cargo", -# "go", -# "git", -# "npm", -# "yarn", -# "pnpm", -# "kubectl", -#] - -[stats] -common_subcommands = [ - "cargo", - "go", - "git", - "nix", - "npm", - "yarn", - "pnpm", - "kubectl", - "task", -] -# Set commands that should be totally stripped and ignored from stats -#common_prefix = ["sudo"] -# -common_prefix = ["doas", "sudo"] diff --git a/.config/autostart/gnome-keyring-ssh.desktop b/.config/autostart/gnome-keyring-ssh.desktop deleted file mode 100644 index d0cbed2..0000000 --- a/.config/autostart/gnome-keyring-ssh.desktop +++ /dev/null @@ -1,157 +0,0 @@ -[Desktop Entry] -Type=Application -Name[af]=SSH-sleutelagent -Name[ar]=عميل مفاتيح SSH -Name[as]=SSH কি সহায়ক -Name[ast]=Axente de claves SSH -Name[be]=SSH-агент ключоў -Name[bg]=Агентът на SSH за ключове -Name[bn]=SSH কী এজেন্ট -Name[bn_IN]=SSH কি এজেন্ট -Name[bs]=Agent za SSH ključeve -Name[ca]=Agent de claus SSH -Name[ca@valencia]=Agent de claus SSH -Name[cs]=Agent klíčů SSH -Name[da]=SSH-nøgleagent -Name[de]=SSH-Schlüsselagent -Name[el]=Πράκτορας κλειδιού SSH -Name[en_GB]=SSH Key Agent -Name[eo]=SSH-ŝlosila agento -Name[es]=Agente de claves SSH -Name[et]=SSH-võtmete agent -Name[eu]=SSH gako-agentea -Name[fa]=عامل کلید SSH -Name[fi]=SSH-avainten agentti -Name[fr]=Agent de clés SSH -Name[fur]=Agjent clâfs SSH -Name[gd]=Àidseant iuchair SSH -Name[gl]=Axente de chave SSH -Name[gu]=SSH કી ઍજન્ટ -Name[he]=סוכן מפתחות SSH -Name[hi]=AFS कुँजी प्रतिनिधि -Name[hr]=Agent SSH ključa -Name[hu]=SSH-kulcs ügynök -Name[id]=Agen Kunci SSH -Name[it]=Agente chiavi SSH -Name[ja]=SSH 鍵エージェント -Name[kk]=SSH кілттер агенті -Name[km]=ភ្នាក់ងារ​សោ SSH -Name[kn]=SSH ಕೀಲಿ ಮಧ್ಯವರ್ತಿ -Name[ko]=SSH 키 에이전트 -Name[lt]=SSH raktų tarnyba -Name[lv]=SSH atslēgu aģents -Name[mjw]=SSH Key Agent -Name[mk]=Агент за SSH клучеви -Name[ml]=എസ്എസ്എച് കീ ഏജന്റ് -Name[mr]=SSH कि एजंट -Name[ms]=Ejen Kunci SSH -Name[nb]=SSH-nøkkelagent -Name[nl]=SSH-sleutelagent -Name[nn]=Nøkkelagent for SSH -Name[oc]=Agent de claus SSH -Name[or]=SSH କି ସଦସ୍ୟ -Name[pa]=SSH ਕੁੰਜੀ ਏਜੰਟ -Name[pl]=Agent kluczy SSH -Name[pt]=Agente de chaves SSH -Name[pt_BR]=Agente de chaves SSH -Name[ro]=Agent pentru chei SSH -Name[ru]=Агент ключей SSH -Name[sk]=Agent kľúčov SSH -Name[sl]=Agent ključev SSH -Name[sr]=Агент за ССХ кључеве -Name[sr@latin]=Agent za SSH ključeve -Name[sv]=SSH-nyckelagent -Name[ta]=SSH முகவர் -Name[te]=SSH కీ వాహకము -Name[th]=เอเจนต์กุญแจ SSH -Name[tr]=SSH Anahtar Aracı -Name[ug]=SSH ئاچقۇچ ياردەمچىسى -Name[uk]=Агент ключів SSH -Name[vi]=Đại diện khóa SSH -Name[zh_CN]=SSH 密钥代理 -Name[zh_HK]=SSH 密碼匙代理程式 -Name[zh_TW]=SSH 金鑰代理程式 -Name=SSH Key Agent -Comment[af]=GNOME-sleutelring: SSH-agent -Comment[ar]=حلقة مفاتيح جنوم: عميل SSH -Comment[as]=GNOME Keyring: SSH সহায়ক -Comment[ast]=Depósitu de claves de GNOME: axente SSH -Comment[be]=Вязкі ключоў GNOME: SSH-агент -Comment[bg]=Ключодържател на GNOME: агент на SSH -Comment[bn]=GNOME কী রিং: SSH এজেন্ট -Comment[bn_IN]=GNOME Keyring: SSH এজেন্ট -Comment[bs]=Gnomovi privjesci: SSH agent -Comment[ca]=Anell de claus del GNOME: agent SSH -Comment[ca@valencia]=Anell de claus del GNOME: agent SSH -Comment[cs]=Klíčenka GNOME: Agent SSH -Comment[da]=GNOME-nøgleringsdæmon: SSH-agent -Comment[de]=GNOME-Schlüsselbunddienst: SSH-Agent -Comment[el]=Κλειδοθήκη GNOME: Πράκτορας SSH -Comment[en_GB]=GNOME Keyring: SSH Agent -Comment[eo]=GNOME Ŝlosilaro: SSH-agento -Comment[es]=Depósito de claves de GNOME: agente SSH -Comment[et]=GNOME võtmerõngas: SSH-agent -Comment[eu]=GNOMEren gako-sorta: SSH agentea -Comment[fa]=دسته‌کلید گنوم: عامل SSH -Comment[fi]=Gnomen avainnippu: SSH-agentti -Comment[fr]=Trousseau de clés de GNOME : agent SSH -Comment[fur]=Puarteclâfs di GNOME: agjent SSH -Comment[gd]=Dul-iuchrach: Àidseant SSH -Comment[gl]=GNOME Keyring: Axente SSH -Comment[gu]=GNOME કીરીંગ: SSH ઍજન્ટ -Comment[he]=קבוצת מפתחות של GNOME: סוכן SSH -Comment[hi]=गनोम कीरिंग: SSH प्रतिनिधि -Comment[hr]=GNOME skup ključeva: SSH agent -Comment[hu]=GNOME kulcstartó – SSH-ügynök -Comment[id]=Ring Kunci GNOME: Agen SSH -Comment[it]=Portachiavi di GNOME: agente SSH -Comment[ja]=GNOME キーリング: SSH エージェント -Comment[kk]=GNOME Keyring: SSH агенті -Comment[km]=GNOME Keyring ៖ ភ្នាក់ងារ SSH -Comment[kn]=GNOME ಕೀಲಿಗೊಂಚಲು: SSH ಮಧ್ಯವರ್ತಿ -Comment[ko]=그놈 키 모음: SSH 에이전트 -Comment[lt]=GNOME raktinė: SSH tarnyba -Comment[lv]=GNOME atslēgu saišķis — SSH aģents -Comment[mjw]=GNOME Keyring: SSH Agent -Comment[mk]=Приврзок на GNOME: SSH агент -Comment[ml]=ഗ്നോം കീറിങ്: എസ്എസ്എച് ഏജന്റ് -Comment[mr]=GNOME किरिंग: SSH एजंट -Comment[ms]=Gelang Kunci GNOME: Ejen SSH -Comment[nb]=GNOME nøkkelring: SSH-agent -Comment[ne]=जिनोम किरिङ : SSH एजेन्ट -Comment[nl]=Sleutelbos-service: SSH-agent -Comment[nn]=GNOME Nøkkelring: SSH-agent -Comment[oc]=Trossèl de claus GNOME : agent SSH -Comment[or]=GNOME କି ରିଙ୍ଗ: SSH ସଦସ୍ୟ -Comment[pa]=ਗਨੋਮ ਕੀਰਿੰਗ: SSH ਏਜੰਟ -Comment[pl]=Baza kluczy dla środowiska GNOME: agent SSH -Comment[pt]=GNOME Keyring: agente SSH -Comment[pt_BR]=Chaveiro do GNOME: Agente SSH -Comment[ro]=Inelul de chei GNOME: Agent SSH -Comment[ru]=Связка ключей GNOME: SSH-агент -Comment[sk]=SSH agent zväzku kľúčov GNOME -Comment[sl]=Zbirka ključev GNOME: agent SSH -Comment[sr]=Гномови привесци: ССХ агент -Comment[sr@latin]=Gnomovi privesci: SSH agent -Comment[sv]=GNOME-nyckelring: SSH-agent -Comment[ta]=GNOME கீரிங்: SSH முகவர் -Comment[te]=GNOME కీరింగ్: SSH వాహకం -Comment[th]=พวงกุญแจของ GNOME: เอเจนต์ SSH -Comment[tr]=GNOME Anahtarlığı: SSH Aracı -Comment[ug]=گىنوم ئاچقۇچ ھالقىسى:SSH ياردەمچىسى -Comment[uk]=Служба в'язки ключів GNOME: агент SSH -Comment[vi]=Chùm chìa khóa GNOME: Đại diện SSH -Comment[zh_CN]=GNOME 密钥环:SSH 代理 -Comment[zh_HK]=GNOME 密碼匙圈:SSH 代理程式 -Comment[zh_TW]=GNOME 鑰匙圈:SSH 代理程式 -Comment=GNOME Keyring: SSH Agent -Exec=/usr/bin/gnome-keyring-daemon --start --components=ssh -OnlyShowIn=GNOME;Unity;MATE;Cinnamon; -X-GNOME-Autostart-Phase=PreDisplayServer -X-GNOME-AutoRestart=false -X-GNOME-Autostart-Notify=true -X-GNOME-Bugzilla-Bugzilla=GNOME -X-GNOME-Bugzilla-Product=gnome-keyring -X-GNOME-Bugzilla-Component=general -X-GNOME-Bugzilla-Version=42.1 -Hidden=true diff --git a/.config/bat/config b/.config/bat/config deleted file mode 100644 index 609fc6e..0000000 --- a/.config/bat/config +++ /dev/null @@ -1,3 +0,0 @@ ---italic-text=always ---plain ---theme=ansi diff --git a/.config/bat/themes/Catppuccin Mocha.tmTheme b/.config/bat/themes/Catppuccin Mocha.tmTheme deleted file mode 100644 index 332cc98..0000000 --- a/.config/bat/themes/Catppuccin Mocha.tmTheme +++ /dev/null @@ -1,2021 +0,0 @@ - - - - - name - Catppuccin Mocha - semanticClass - theme.dark.catppuccin-mocha - uuid - 627ce890-fabb-4d39-9819-7be71f4bdca7 - author - Catppuccin Org - colorSpaceName - sRGB - settings - - - settings - - background - #1e1e2e - foreground - #cdd6f4 - caret - #f5e0dc - lineHighlight - #cdd6f412 - misspelling - #f38ba8 - accent - #cba6f7 - selection - #9399b240 - activeGuide - #45475a - findHighlight - #3e5767 - gutterForeground - #7f849c - - - - name - Basic text & variable names (incl. leading punctuation) - scope - text, source, variable.other.readwrite, punctuation.definition.variable - settings - - foreground - #cccccc - - - - name - Parentheses, Brackets, Braces - scope - punctuation - settings - - foreground - #9399b2 - fontStyle - - - - - name - Comments - scope - comment, punctuation.definition.comment - settings - - foreground - #6c7086 - fontStyle - italic - - - - scope - string, punctuation.definition.string - settings - - foreground - #a6e3a1 - - - - scope - constant.character.escape - settings - - foreground - #f5c2e7 - - - - name - Booleans, constants, numbers - scope - constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point - settings - - foreground - #fab387 - - - - scope - keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword - settings - - foreground - #cba6f7 - fontStyle - - - - - scope - entity.name.tag.documentation - settings - - foreground - #cba6f7 - - - - name - Punctuation - scope - keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value - settings - - foreground - #94e2d5 - - - - scope - entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Classes - scope - entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Enum - scope - entity.name.enum - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Enum member - scope - meta.enum variable.other.readwrite, variable.other.enummember - settings - - foreground - #94e2d5 - - - - name - Object properties - scope - meta.property.object - settings - - foreground - #94e2d5 - - - - name - Types - scope - meta.type, meta.type-alias, support.type, entity.name.type - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Decorators - scope - meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator - settings - - foreground - #fab387 - - - - scope - variable.parameter, meta.function.parameters - settings - - foreground - #eba0ac - fontStyle - italic - - - - name - Built-ins - scope - constant.language, support.function.builtin - settings - - foreground - #f38ba8 - - - - scope - entity.other.attribute-name.documentation - settings - - foreground - #f38ba8 - - - - name - Preprocessor directives - scope - keyword.control.directive, punctuation.definition.directive - settings - - foreground - #f9e2af - - - - name - Type parameters - scope - punctuation.definition.typeparameters - settings - - foreground - #89dceb - - - - name - Namespaces - scope - entity.name.namespace - settings - - foreground - #f9e2af - - - - name - Property names (left hand assignments in json/yaml/css) - scope - support.type.property-name.css - settings - - foreground - #89b4fa - fontStyle - - - - - name - This/Self keyword - scope - variable.language.this, variable.language.this punctuation.definition.variable - settings - - foreground - #f38ba8 - - - - name - Object properties - scope - variable.object.property - settings - - foreground - #cdd6f4 - - - - name - String template interpolation - scope - string.template variable, string variable - settings - - foreground - #cdd6f4 - - - - name - `new` as bold - scope - keyword.operator.new - settings - - fontStyle - bold - - - - name - C++ extern keyword - scope - storage.modifier.specifier.extern.cpp - settings - - foreground - #cba6f7 - - - - name - C++ scope resolution - scope - entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp - settings - - foreground - #f9e2af - - - - name - C++ doc keywords - scope - storage.type.class.doxygen - settings - - fontStyle - - - - - name - C++ operators - scope - storage.modifier.reference.cpp - settings - - foreground - #94e2d5 - - - - name - C# Interpolated Strings - scope - meta.interpolation.cs - settings - - foreground - #cdd6f4 - - - - name - C# xml-style docs - scope - comment.block.documentation.cs - settings - - foreground - #cdd6f4 - - - - name - Classes, reflecting the className color in JSX - scope - source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css - settings - - foreground - #f9e2af - - - - name - Operators - scope - punctuation.separator.operator.css - settings - - foreground - #94e2d5 - - - - name - Pseudo classes - scope - source.css entity.other.attribute-name.pseudo-class - settings - - foreground - #94e2d5 - - - - scope - source.css constant.other.unicode-range - settings - - foreground - #fab387 - - - - scope - source.css variable.parameter.url - settings - - foreground - #a6e3a1 - fontStyle - - - - - name - CSS vendored property names - scope - support.type.vendored.property-name - settings - - foreground - #89dceb - - - - name - Less/SCSS right-hand variables (@/$-prefixed) - scope - source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss - settings - - foreground - #eba0ac - - - - name - CSS variables (--prefixed) - scope - source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less - settings - - foreground - #89b4fa - - - - name - CSS Percentage values, styled the same as numbers - scope - keyword.other.unit.percentage.css - settings - - foreground - #fab387 - - - - name - CSS Attribute selectors, styled the same as strings - scope - source.css meta.attribute-selector - settings - - foreground - #a6e3a1 - - - - name - JSON/YAML keys, other left-hand assignments - scope - keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml - settings - - foreground - #89b4fa - fontStyle - - - - - name - JSON/YAML constants - scope - constant.language.json, constant.language.yaml - settings - - foreground - #fab387 - - - - name - YAML anchors - scope - entity.name.type.anchor.yaml, variable.other.alias.yaml - settings - - foreground - #f9e2af - fontStyle - - - - - name - TOML tables / ini groups - scope - support.type.property-name.table, entity.name.section.group-title.ini - settings - - foreground - #f9e2af - - - - name - TOML dates - scope - constant.other.time.datetime.offset.toml - settings - - foreground - #f5c2e7 - - - - name - YAML anchor puctuation - scope - punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml - settings - - foreground - #f5c2e7 - - - - name - YAML triple dashes - scope - entity.other.document.begin.yaml - settings - - foreground - #f5c2e7 - - - - name - Markup Diff - scope - markup.changed.diff - settings - - foreground - #fab387 - - - - name - Diff - scope - meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff - settings - - foreground - #89b4fa - - - - name - Diff Inserted - scope - markup.inserted.diff - settings - - foreground - #a6e3a1 - - - - name - Diff Deleted - scope - markup.deleted.diff - settings - - foreground - #f38ba8 - - - - name - dotenv left-hand side assignments - scope - variable.other.env - settings - - foreground - #89b4fa - - - - name - dotenv reference to existing env variable - scope - string.quoted variable.other.env - settings - - foreground - #cdd6f4 - - - - name - GDScript functions - scope - support.function.builtin.gdscript - settings - - foreground - #89b4fa - - - - name - GDScript constants - scope - constant.language.gdscript - settings - - foreground - #fab387 - - - - name - Comment keywords - scope - comment meta.annotation.go - settings - - foreground - #eba0ac - - - - name - go:embed, go:build, etc. - scope - comment meta.annotation.parameters.go - settings - - foreground - #fab387 - - - - name - Go constants (nil, true, false) - scope - constant.language.go - settings - - foreground - #fab387 - - - - name - GraphQL variables - scope - variable.graphql - settings - - foreground - #cdd6f4 - - - - name - GraphQL aliases - scope - string.unquoted.alias.graphql - settings - - foreground - #f2cdcd - - - - name - GraphQL enum members - scope - constant.character.enum.graphql - settings - - foreground - #94e2d5 - - - - name - GraphQL field in types - scope - meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql - settings - - foreground - #f2cdcd - - - - name - HTML/XML DOCTYPE as keyword - scope - keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag - settings - - foreground - #cba6f7 - - - - name - HTML/XML-like <tags/> - scope - entity.name.tag - settings - - foreground - #89b4fa - fontStyle - - - - - name - Special characters like &amp; - scope - text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation - settings - - foreground - #f38ba8 - - - - name - HTML/XML tag attribute values - scope - entity.other.attribute-name - settings - - foreground - #f9e2af - - - - name - Components - scope - support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue - settings - - foreground - #f5c2e7 - fontStyle - - - - - name - Annotations - scope - punctuation.definition.annotation, storage.type.annotation - settings - - foreground - #fab387 - - - - name - Java enums - scope - constant.other.enum.java - settings - - foreground - #94e2d5 - - - - name - Java imports - scope - storage.modifier.import.java - settings - - foreground - #cdd6f4 - - - - name - Javadoc - scope - comment.block.javadoc.java keyword.other.documentation.javadoc.java - settings - - fontStyle - - - - - name - Exported Variable - scope - meta.export variable.other.readwrite.js - settings - - foreground - #eba0ac - - - - name - JS/TS constants & properties - scope - variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts - settings - - foreground - #cdd6f4 - - - - name - JSDoc; these are mainly params, so styled as such - scope - variable.other.jsdoc, comment.block.documentation variable.other - settings - - foreground - #eba0ac - fontStyle - - - - - name - JSDoc keywords - scope - storage.type.class.jsdoc - settings - - fontStyle - - - - - scope - support.type.object.console.js - settings - - foreground - #cdd6f4 - - - - name - Node constants as keywords (module, etc.) - scope - support.constant.node, support.type.object.module.js - settings - - foreground - #cba6f7 - - - - name - implements as keyword - scope - storage.modifier.implements - settings - - foreground - #cba6f7 - - - - name - Builtin types - scope - constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts - settings - - foreground - #cba6f7 - - - - scope - variable.parameter.generic - settings - - foreground - #f9e2af - - - - name - Arrow functions - scope - keyword.declaration.function.arrow.js, storage.type.function.arrow.ts - settings - - foreground - #94e2d5 - - - - name - Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach) - scope - punctuation.decorator.ts - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Extra JS/TS keywords - scope - keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts - settings - - foreground - #cba6f7 - - - - name - Julia macros - scope - support.function.macro.julia - settings - - foreground - #94e2d5 - fontStyle - italic - - - - name - Julia language constants (true, false) - scope - constant.language.julia - settings - - foreground - #fab387 - - - - name - Julia other constants (these seem to be arguments inside arrays) - scope - constant.other.symbol.julia - settings - - foreground - #eba0ac - - - - name - LaTeX preamble - scope - text.tex keyword.control.preamble - settings - - foreground - #94e2d5 - - - - name - LaTeX be functions - scope - text.tex support.function.be - settings - - foreground - #89dceb - - - - name - LaTeX math - scope - constant.other.general.math.tex - settings - - foreground - #f2cdcd - - - - name - Lua docstring keywords - scope - comment.line.double-dash.documentation.lua storage.type.annotation.lua - settings - - foreground - #cba6f7 - fontStyle - - - - - name - Lua docstring variables - scope - comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua - settings - - foreground - #cdd6f4 - - - - scope - heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc - settings - - foreground - #f38ba8 - - - - scope - heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc - settings - - foreground - #fab387 - - - - scope - heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc - settings - - foreground - #f9e2af - - - - scope - heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc - settings - - foreground - #a6e3a1 - - - - scope - heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc - settings - - foreground - #89b4fa - - - - scope - heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc - settings - - foreground - #cba6f7 - - - - scope - markup.bold - settings - - foreground - #f38ba8 - fontStyle - bold - - - - scope - markup.italic - settings - - foreground - #f38ba8 - fontStyle - italic - - - - scope - markup.strikethrough - settings - - foreground - #a6adc8 - fontStyle - strikethrough - - - - name - Markdown auto links - scope - punctuation.definition.link, markup.underline.link - settings - - foreground - #89b4fa - - - - name - Markdown links - scope - text.html.markdown punctuation.definition.link.title, string.other.link.title.markdown, markup.link, punctuation.definition.constant.markdown, constant.other.reference.link.markdown, markup.substitution.attribute-reference - settings - - foreground - #b4befe - - - - name - Markdown code spans - scope - punctuation.definition.raw.markdown, markup.inline.raw.string.markdown, markup.raw.block.markdown - settings - - foreground - #a6e3a1 - - - - name - Markdown triple backtick language identifier - scope - fenced_code.block.language - settings - - foreground - #89dceb - - - - name - Markdown triple backticks - scope - markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc - settings - - foreground - #9399b2 - - - - name - Markdown quotes - scope - markup.quote, punctuation.definition.quote.begin - settings - - foreground - #f5c2e7 - - - - name - Markdown separators - scope - meta.separator.markdown - settings - - foreground - #94e2d5 - - - - name - Markdown list bullets - scope - punctuation.definition.list.begin.markdown, markup.list.bullet - settings - - foreground - #94e2d5 - - - - name - Nix attribute names - scope - entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix - settings - - foreground - #89b4fa - - - - name - Nix parameter names - scope - variable.parameter.name.nix - settings - - foreground - #cdd6f4 - fontStyle - - - - - name - Nix interpolated parameter names - scope - meta.embedded variable.parameter.name.nix - settings - - foreground - #b4befe - fontStyle - - - - - name - Nix paths - scope - string.unquoted.path.nix - settings - - foreground - #f5c2e7 - fontStyle - - - - - name - PHP Attributes - scope - support.attribute.builtin, meta.attribute.php - settings - - foreground - #f9e2af - - - - name - PHP Parameters (needed for the leading dollar sign) - scope - meta.function.parameters.php punctuation.definition.variable.php - settings - - foreground - #eba0ac - - - - name - PHP Constants (null, __FILE__, etc.) - scope - constant.language.php - settings - - foreground - #cba6f7 - - - - name - PHP functions - scope - text.html.php support.function - settings - - foreground - #89dceb - - - - name - PHPdoc keywords - scope - keyword.other.phpdoc.php - settings - - fontStyle - - - - - name - Python argument functions reset to text, otherwise they inherit blue from function-call - scope - support.variable.magic.python, meta.function-call.arguments.python - settings - - foreground - #cdd6f4 - - - - name - Python double underscore functions - scope - support.function.magic.python - settings - - foreground - #89dceb - fontStyle - italic - - - - name - Python `self` keyword - scope - variable.parameter.function.language.special.self.python, variable.language.special.self.python - settings - - foreground - #f38ba8 - fontStyle - italic - - - - name - python keyword flow/logical (for ... in) - scope - keyword.control.flow.python, keyword.operator.logical.python - settings - - foreground - #cba6f7 - - - - name - python storage type - scope - storage.type.function.python - settings - - foreground - #cba6f7 - - - - name - python function support - scope - support.token.decorator.python, meta.function.decorator.identifier.python - settings - - foreground - #89dceb - - - - name - python function calls - scope - meta.function-call.python - settings - - foreground - #89b4fa - - - - name - python function decorators - scope - entity.name.function.decorator.python, punctuation.definition.decorator.python - settings - - foreground - #fab387 - fontStyle - italic - - - - name - python placeholder reset to normal string - scope - constant.character.format.placeholder.other.python - settings - - foreground - #f5c2e7 - - - - name - Python exception & builtins such as exit() - scope - support.type.exception.python, support.function.builtin.python - settings - - foreground - #fab387 - - - - name - entity.name.type - scope - support.type.python - settings - - foreground - #fab387 - - - - name - python constants (True/False) - scope - constant.language.python - settings - - foreground - #cba6f7 - - - - name - Arguments accessed later in the function body - scope - meta.indexed-name.python, meta.item-access.python - settings - - foreground - #eba0ac - fontStyle - italic - - - - name - Python f-strings/binary/unicode storage types - scope - storage.type.string.python - settings - - foreground - #a6e3a1 - fontStyle - italic - - - - name - Python type hints - scope - meta.function.parameters.python - settings - - fontStyle - - - - - name - Regex string begin/end in JS/TS - scope - string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end - settings - - foreground - #f5c2e7 - - - - name - Regex anchors (^, $) - scope - keyword.control.anchor.regexp - settings - - foreground - #cba6f7 - - - - name - Regex regular string match - scope - string.regexp.ts - settings - - foreground - #cdd6f4 - - - - name - Regex group parenthesis & backreference (\1, \2, \3, ...) - scope - punctuation.definition.group.regexp, keyword.other.back-reference.regexp - settings - - foreground - #a6e3a1 - - - - name - Regex character class [] - scope - punctuation.definition.character-class.regexp - settings - - foreground - #f9e2af - - - - name - Regex character classes (\d, \w, \s) - scope - constant.other.character-class.regexp - settings - - foreground - #f5c2e7 - - - - name - Regex range - scope - constant.other.character-class.range.regexp - settings - - foreground - #f5e0dc - - - - name - Regex quantifier - scope - keyword.operator.quantifier.regexp - settings - - foreground - #94e2d5 - - - - name - Regex constant/numeric - scope - constant.character.numeric.regexp - settings - - foreground - #fab387 - - - - name - Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds - scope - punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp - settings - - foreground - #89b4fa - - - - name - Rust attribute - scope - meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Rust attribute strings - scope - meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust - settings - - fontStyle - - - - - name - Rust keyword - scope - entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust - settings - - foreground - #cba6f7 - fontStyle - - - - - name - Rust u/i32, u/i64, etc. - scope - entity.name.type.numeric.rust - settings - - foreground - #cba6f7 - fontStyle - - - - - name - Rust generic - scope - meta.generic.rust - settings - - foreground - #fab387 - - - - name - Rust impl - scope - entity.name.impl.rust - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Rust module - scope - entity.name.module.rust - settings - - foreground - #fab387 - - - - name - Rust trait - scope - entity.name.trait.rust - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Rust struct - scope - storage.type.source.rust - settings - - foreground - #f9e2af - - - - name - Rust union - scope - entity.name.union.rust - settings - - foreground - #f9e2af - - - - name - Rust enum member - scope - meta.enum.rust storage.type.source.rust - settings - - foreground - #94e2d5 - - - - name - Rust macro - scope - support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Rust lifetime - scope - storage.modifier.lifetime.rust, entity.name.type.lifetime - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Rust string formatting - scope - string.quoted.double.rust constant.other.placeholder.rust - settings - - foreground - #f5c2e7 - - - - name - Rust return type generic - scope - meta.function.return-type.rust meta.generic.rust storage.type.rust - settings - - foreground - #cdd6f4 - - - - name - Rust functions - scope - meta.function.call.rust - settings - - foreground - #89b4fa - - - - name - Rust angle brackets - scope - punctuation.brackets.angle.rust - settings - - foreground - #89dceb - - - - name - Rust constants - scope - constant.other.caps.rust - settings - - foreground - #fab387 - - - - name - Rust function parameters - scope - meta.function.definition.rust variable.other.rust - settings - - foreground - #eba0ac - - - - name - Rust closure variables - scope - meta.function.call.rust variable.other.rust - settings - - foreground - #cdd6f4 - - - - name - Rust self - scope - variable.language.self.rust - settings - - foreground - #f38ba8 - - - - name - Rust metavariable names - scope - variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust - settings - - foreground - #f5c2e7 - - - - name - Shell shebang - scope - comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell - settings - - foreground - #f5c2e7 - fontStyle - italic - - - - name - Shell shebang command - scope - comment.line.shebang constant.language - settings - - foreground - #94e2d5 - fontStyle - italic - - - - name - Shell interpolated command - scope - meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation - settings - - foreground - #f38ba8 - - - - name - Shell interpolated command variable - scope - meta.string meta.interpolation.parameter.shell variable.other.readwrite - settings - - foreground - #fab387 - fontStyle - italic - - - - scope - source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell - settings - - foreground - #94e2d5 - - - - name - Shell EOF - scope - entity.name.tag.heredoc.shell - settings - - foreground - #cba6f7 - - - - name - Shell quoted variable - scope - string.quoted.double.shell variable.other.normal.shell - settings - - foreground - #cdd6f4 - - - - scope - markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man - settings - - foreground - #cba6f7 - - - - scope - markup.heading.commands.man - settings - - foreground - #89b4fa - - - - scope - markup.heading.env.man - settings - - foreground - #f5c2e7 - - - - - diff --git a/.config/broot/conf.hjson b/.config/broot/conf.hjson deleted file mode 100644 index c74318c..0000000 --- a/.config/broot/conf.hjson +++ /dev/null @@ -1,40 +0,0 @@ -show_selection_mark: true -true_colors: true -icon_theme: nerdfont - -special_paths: { - "/media" : { - list: "never" - sum: "never" - } - "~/.config": { "show": "always" } - "trav": { - show: always - list: "always", - sum: "never" - } - # "~/useless": { "show": "never" } - # "~/my-link-I-want-to-explore": { "list": "always" } -} - -quit_on_last_cancel: true -content_search_max_file_size: 10MB -enable_kitty_keyboard: true -lines_before_match_in_preview: 1 -lines_after_match_in_preview: 1 - -imports: [ - verbs.hjson - - { - luma: dark - file: skins/dieter-dark.hjson - } - { - luma: [ - light - unknown - ] - file: skins/dieter-light.hjson - } -] diff --git a/.config/broot/launcher/bash/br b/.config/broot/launcher/bash/br deleted file mode 120000 index c577ca3..0000000 --- a/.config/broot/launcher/bash/br +++ /dev/null @@ -1 +0,0 @@ -/home/dln/.local/share/broot/launcher/bash/1 \ No newline at end of file diff --git a/.config/broot/launcher/installed-v4 b/.config/broot/launcher/installed-v4 deleted file mode 100644 index 3f026af..0000000 --- a/.config/broot/launcher/installed-v4 +++ /dev/null @@ -1,4 +0,0 @@ - -This file tells broot the installation of the br function was done. -If there's a problem and you want to install it again run - broot -- install diff --git a/.config/broot/select.hjson b/.config/broot/select.hjson deleted file mode 100644 index 20ec81d..0000000 --- a/.config/broot/select.hjson +++ /dev/null @@ -1,17 +0,0 @@ -verbs: [ - { - invocation: "ok" - key: "enter" - leave_broot: true - execution: ":print_path" - apply_to: "directory" - } - - { - invocation: "broot_home" - keys: ["ctrl-7", "ctrl-g"] - execution: "broot -f --conf ~/.config/broot/select.hjson $HOME" - leave_broot: true - } -] - diff --git a/.config/broot/skins/dieter-light.hjson b/.config/broot/skins/dieter-light.hjson deleted file mode 100644 index ad61918..0000000 --- a/.config/broot/skins/dieter-light.hjson +++ /dev/null @@ -1,84 +0,0 @@ -############################################################### -# A skin for a terminal with a white background -# -# To create your own skin, copy this file, change the entries -# and import your skin file from the main conf file (look -# for "imports") -# -# Doc at https://dystroy.org/broot/skins/ -############################################################### -syntax_theme: base16-ocean.light - -skin: { - default: gray(0) None - tree: gray(20) None / gray(18) None - file: gray(1) None / gray(8) None - directory: gray(4) None Bold / ansi(4) None - exe: ansi(130) None - link: Magenta None - pruning: gray(12) None Italic - perm__: gray(5) None - perm_r: ansi(94) None - perm_w: ansi(132) None - perm_x: ansi(65) None - owner: ansi(138) None - group: ansi(131) None - dates: ansi(66) None - sparse: ansi(214) None - git_branch: ansi(229) None - git_insertions: ansi(28) None - git_deletions: ansi(160) None - git_status_current: gray(5) None - git_status_modified: ansi(28) None - git_status_new: ansi(94) None Bold - git_status_ignored: gray(17) None - git_status_conflicted: ansi(88) None - git_status_other: ansi(88) None - selected_line: None gray(20) - char_match: None ansi(226) - file_error: Red None - flag_label: gray(9) None - flag_value: ansi(166) None Bold - input: gray(1) None / gray(4) gray(20) - status_error: gray(22) ansi(124) - status_normal: gray(2) gray(20) - status_job: ansi(220) gray(5) - status_italic: ansi(166) gray(20) - status_bold: ansi(166) gray(20) - status_code: ansi(17) gray(20) - status_ellipsis: gray(19) gray(15) - purpose_normal: gray(20) gray(2) - purpose_italic: ansi(178) gray(2) - purpose_bold: ansi(178) gray(2) Bold - purpose_ellipsis: gray(20) gray(2) - scrollbar_track: gray(20) none - scrollbar_thumb: ansi(238) none - help_paragraph: gray(2) none - help_bold: ansi(202) none bold - help_italic: ansi(202) none italic - help_code: gray(5) gray(22) - help_headers: ansi(202) none - help_table_border: ansi(239) None - preview_title: gray(3) None / gray(5) None - preview: gray(5) gray(23) / gray(7) gray(23) - preview_line_number: gray(6) gray(20) - preview_separator: gray(7) None / gray(18) None - preview_match: None ansi(29) Underlined - hex_null: gray(15) None - hex_ascii_graphic: gray(2) None - hex_ascii_whitespace: ansi(143) None - hex_ascii_other: ansi(215) None - hex_non_ascii: ansi(167) None - staging_area_title: gray(8) None / gray(13) None - mode_command_mark: gray(15) ansi(204) Bold - good_to_bad_0: ansi(28) - good_to_bad_1: ansi(29) - good_to_bad_2: ansi(29) - good_to_bad_3: ansi(29) - good_to_bad_4: ansi(29) - good_to_bad_5: ansi(100) - good_to_bad_6: ansi(136) - good_to_bad_7: ansi(172) - good_to_bad_8: ansi(166) - good_to_bad_9: ansi(196) -} diff --git a/.config/broot/verbs.hjson b/.config/broot/verbs.hjson deleted file mode 100644 index da78ce8..0000000 --- a/.config/broot/verbs.hjson +++ /dev/null @@ -1,184 +0,0 @@ -############################################################### -# This file contains the verb definitions for broot -# -# Some verbs here are examples and not enabled by default: you -# need to uncomment them if you want to use them. -# -# Documentation at https://dystroy.org/broot/verbs/ -############################################################### - -verbs: [ - { - invocation: edit - key: enter - shortcut: e - execution: "wezterm-edit-helper {file}" - apply_to: text_file - leave_broot: true - } - - { - invocation: nvim - key: enter - apply_to: text_file - execution: "wezterm-edit-helper {file}" - leave_broot: true - } - - { - invocation: broot_home - key: ctrl-7 - execution: br $HOME - leave_broot: true - } - - # You should customize this standard opening of text files. - # If you edit text files in your terminal (vi, emacs, helix, eg.), then - # you'll find it convenient to change the 'key' from 'ctrl-e' to 'enter'. - # - # If $EDITOR isn't set on your computer, you should either set it using - # something similar to - # export EDITOR=/usr/local/bin/nvim - # or just replace it with your editor of choice in the 'execution' - # pattern. - # If your editor is able to open a file on a specific line, use {line} - # so that you may jump directly at the right line from a preview or - # a content search. - # Examples depending on your favourite editor: - # execution: "nvim +{line} {file}" - # execution: "helix {file}:{line}" - { - invocation: edit - shortcut: e - key: ctrl-e - apply_to: text_file - execution: "$EDITOR {file}" - leave_broot: false - } - - # Example 1: launching `tail -n` on the selected file (leaving broot) - # { - # name: tail_lines - # invocation: tl {lines_count} - # execution: "tail -f -n {lines_count} {file}" - # } - - # Example 2: creating a new file without leaving broot - # { - # name: touch - # invocation: touch {new_file} - # execution: "touch {directory}/{new_file}" - # leave_broot: false - # } - - # A convenient shortcut to create new text files in - # the current directory or below - { - invocation: create {subpath} - execution: "$EDITOR {directory}/{subpath}" - leave_broot: false - } - - { - invocation: git_diff - shortcut: gd - leave_broot: false - execution: "git difftool -y {file}" - } - - # On ctrl-b, propose the creation of a copy of the selection. - # While this might occasionally be useful, this verb is mostly here - # as an example to demonstrate rare standard groups like {file-stem} - # and {file-dot-extension} and the auto_exec verb property which - # allows verbs to stay unexecuted until you hit enter - { - invocation: "backup {version}" - key: ctrl-b - leave_broot: false - auto_exec: false - execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}" - } - - # By default, `rm` does the system rm, and completely removes - # the file. If you prefer to have the file moved to the system - # trash, you may use the ':trash' internal with the verb below: - # { - # invocation: "rm" - # internal: "trash" - # leave_broot: false - # } - - # This verb lets you launch a terminal on ctrl-T - # (on exit you'll be back in broot) - { - invocation: terminal - key: ctrl-t - execution: "$SHELL" - set_working_dir: true - leave_broot: false - } - - # Here's an example of a verb needing the shell capabilities. - # It copies all children of the currently selected directory - # to a destination you type. - # It uses a star, which needs the shell for expansion. That's - # why such verb must have the `from_shell: true` parameter. - # { - # invocation: "cpa {dest}" - # external: "cp -r {directory}/* {dest}" - # from_shell: true - # } - - # Here's an example of a shortcut bringing you to your home directory - # { - # invocation: home - # key: ctrl-home - # execution: ":focus ~" - # } - - # Here's going to the work-dir root of the current git repository - # { - # invocation: gtr - # execution: ":focus {git-root}" - # } - - # A popular set of shortcuts for going up and down: - # - # { - # key: ctrl-k - # execution: ":line_up" - # } - # { - # key: ctrl-j - # execution: ":line_down" - # } - # { - # key: ctrl-u - # execution: ":page_up" - # } - # { - # key: ctrl-d - # execution: ":page_down" - # } - - # If you develop using git, you might like to often switch - # to the git status filter: - # { - # key: alt-g - # execution: ":toggle_git_status" - # } - - # You can reproduce the bindings of Norton Commander - # on copying or moving to the other panel: - # { - # key: F5 - # external: "cp -r {file} {other-panel-directory}" - # leave_broot: false - # } - # { - # key: F6 - # external: "mv {file} {other-panel-directory}" - # leave_broot: false - # } -] - diff --git a/.config/buildkit/buildkitd.toml b/.config/buildkit/buildkitd.toml deleted file mode 100644 index b273b2b..0000000 --- a/.config/buildkit/buildkitd.toml +++ /dev/null @@ -1,7 +0,0 @@ -[worker.oci] - enabled = false - -[worker.containerd] - enabled = true - rootless = true - address = "/run/user/1000/containerd/containerd.sock" diff --git a/.config/chrome-beta-flags.conf b/.config/chrome-beta-flags.conf deleted file mode 100644 index e77a043..0000000 --- a/.config/chrome-beta-flags.conf +++ /dev/null @@ -1 +0,0 @@ ---enable-features=OzonePlatform --ozone-platform=wayland diff --git a/.config/contour/contour.yml b/.config/contour/contour.yml deleted file mode 100644 index 8955087..0000000 --- a/.config/contour/contour.yml +++ /dev/null @@ -1,769 +0,0 @@ -# Default Contour Configuration File. - -# Overrides the auto-detected platform plugin to be loaded. -# -# Possible (incomplete list of) values are: -# - auto The platform will be auto-detected. -# - xcb Uses XCB plugin (for X11 environment). -# - cocoa Used to be run on Mac OS/X. -# - direct2d Windows platform plugin using Direct2D. -# - winrt Windows platform plugin using WinRT. -# -# Default: auto -platform_plugin: auto - -# VT Renderer configuration. -# ADVANCED! Do not touch unless you know what you are doing. -renderer: - # Backend to use for rendering the terminal onto the screen - # - # Possible values are: - # - default Uses the default rendering option as decided by the terminal. - # - software Uses software-based rendering. - # - OpenGL Use (possibly) hardware accelerated OpenGL - backend: OpenGL - - # Number of hashtable slots to map to the texture tiles. - # Larger values may increase performance, but too large may also decrease. - # This value is rounded up to a value equal to the power of two. - # - # Default: 4096 - tile_hashtable_slots: 4096 - - # Number of tiles that must fit at lest into the texture atlas. - # - # This does not include direct mapped tiles (US-ASCII glyphs, - # cursor shapes and decorations), if tile_direct_mapping is set to true). - # - # Value must be at least as large as grid cells available in the terminal view. - # This value is automatically adjusted if too small. - # - # Default: 4000 - tile_cache_count: 4000 - - # Enables/disables the use of direct-mapped texture atlas tiles for - # the most often used ones (US-ASCII, cursor shapes, underline styles) - # You most likely do not want to touch this. - # - # Default: true - tile_direct_mapping: true - -# Word delimiters when selecting word-wise. -word_delimiters: " /\\()\"'-.,:;<>~!@#$%^&*+=[]{}~?|│" - -# Default PTY read buffer size. -# -# This is an advance option. Use with care! -# Default: 16384 -read_buffer_size: 16384 - -# Size in bytes per PTY Buffer Object. -# -# This is an advanced option of an internal storage. Only change with care! -pty_buffer_size: 1048576 - -default_profile: main - -# Flag to determine whether to spawn new process or not when creating new terminal -# Default: false -spawn_new_process: false - -# Whether or not to reflow the lines on terminal resize events. -# Default: true -reflow_on_resize: true - -# Section of experimental features. -# All experimental features are disabled by default and must be explicitly enabled here. -# NOTE: Contour currently has no experimental features behind this configuration wall. -# experimental: -# # Enables experimental support for feature X/Y/Z -# feature_xyz: true - -# This keyboard modifier can be used to bypass the terminal's mouse protocol, -# which can be used to select screen content even if the an application -# mouse protocol has been activated (Default: Shift). -# -# The same modifier values apply as with input modifiers (see below). -bypass_mouse_protocol_modifier: Shift - -# Modifier to be pressed in order to initiate block-selection -# using the left mouse button. -# -# This is usually the Control modifier, but on OS/X that is not possible, -# so Alt or Meta would be recommended instead. -# -# Supported modifiers: -# - Alt -# - Control -# - Shift -# - Meta -# -# Default: Control -mouse_block_selection_modifier: Control - -# Selects an action to perform when a text selection has been made. -# -# Possible values are: -# -# - None Does nothing -# - CopyToClipboard Copies the selection to the primary clipboard. -# - CopyToSelectionClipboard Copies the selection to the selection clipboard. -# This is not supported on all platforms. -# -# Default: CopyToSelectionClipboard -on_mouse_select: CopyToSelectionClipboard - -# Determines whether the instance is reloading the configuration files whenever it is changing or not. -# -# Default: false -live_config: false - -# Inline image related default configuration and limits -# ----------------------------------------------------- -images: - # Enable or disable sixel scrolling (SM/RM ?80 default) - sixel_scrolling: true - # Configures the maximum number of color registers available when rendering Sixel graphics. - sixel_register_count: 4096 - # maximum width in pixels of an image to be accepted (0 defaults to system screen pixel width) - max_width: 0 - # maximum height in pixels of an image to be accepted (0 defaults to system screen pixel height) - max_height: 0 - -# Terminal Profiles -# ----------------- -# -# Dominates how your terminal visually looks like. You will need at least one terminal profile. -profiles: - main: - # You can override the process to be started inside the terminal. - # If nothing is specified, the users' default login shell will be used. - # But you may as well log in to a remote host. - # shell: "ssh ubuntu-vm" - # shell: "/bin/bash" - # arguments: ["some", "optional", "arguments", "for", "the", "shell"] - - # If this terminal is being executed from within Flatpak, enforces sandboxing - # then this boolean indicates whether or not that sandbox should be escaped or not. - # - # Default value is true. - # - # It only makes sense to set this value to false if you really know what you are doing. - escape_sandbox: true - - # Advanced value that is useful when CopyPreviousMarkRange is used - # with multiline-prompts. This offset value is being added to the - # current cursor's line number minus 1 (i.e. the line above the current cursor). - # - # Default value is 0. - copy_last_mark_range_offset: 0 - - # Sets initial working directory when spawning a new terminal. - # A leading ~ is expanded to the user's home directory. - # Default value is the user's home directory. - initial_working_directory: "~" - - # When this profile is *activated*, this flag decides - # whether or not the title bar will be shown - show_title_bar: false - # When this profile is being *activated*, this flag decides - # whether or not to put the terminal's screen into fullscreen mode. - # - # It is activated during startup as well as when switching from another profile to this one. - fullscreen: false - - # When this profile is *activated*, this flag decides - # whether or not to put the window into maximized mode. - maximized: false - - # Defines the class part of the WM_CLASS property of the window. - wm_class: "contour" - - # Environment variables to be passed to the shell. - # environment: - # TERM: contour - # COLORTERM: truecolor - - # Determines the terminal type that is being advertised. - # Possible values are: - # - VT100 - # - VT220 - # - VT240 - # - VT330 - # - VT340 - # - VT320 - # - VT420 - # - VT510 - # - VT520 - # - VT525 - # Default: VT525 - terminal_id: VT525 - - # Determines the initial terminal size in characters. - terminal_size: - columns: 80 - lines: 25 - - history: - # Number of lines to preserve (-1 for infinite). - limit: 1000 - # Boolean indicating whether or not to scroll down to the bottom on screen updates. - auto_scroll_on_update: true - # Number of lines to scroll on ScrollUp & ScrollDown events. - # Default: 3 - scroll_multiplier: 3 - - # visual scrollbar support - scrollbar: - # scroll bar position: Left, Right, Hidden (ignore-case) - position: Hidden - # whether or not to hide the scrollbar when in alt-screen. - hide_in_alt_screen: true - - # mouse setting - mouse: - # whether or not to hide mouse when typing - # - # Default value: true - hide_while_typing: true - - # Some VT sequences should need access permissions. - # - # These can be to: - # - allow Allows the given functionality - # - deny Denies the given functionality - # - ask Asks the user interactively via popup dialog for permission of the given action. - # - # Default for all of these entries should be: "ask". - permissions: - # Allows changing the font via `OSC 50 ; Pt ST`. - change_font: ask - # Allows capturing the screen buffer via `CSI > Pm ; Ps ; Pc ST`. - # The response can be read from stdin as sequence `OSC 314 ; ST` - capture_buffer: ask - # Allows displaying the "Host Writable Statusline" programmatically using `DECSSDT 2`. - display_host_writable_statusline: ask - - # If enabled, and you double-click on a word in the primary screen, - # all other words matching this word will be highlighted as well. - # So the double-clicked word will be selected as well as highlighted, along with - # all other words being simply highlighted. - # - # This is currently implemented by initiating a search on the double-clicked word. - # Therefore one can even use FocusNextSearchMatch and FocusPreviousSearchMatch to - # jump to the next/previous same word, also outside of the current viewport. - # - # Default: true - highlight_word_and_matches_on_double_click: true - - # Font related configuration (font face, styles, size, rendering mode). - font: - # Initial font size in pixels. - size: 20 - - # DPI scaling factor applied on top of the system configured on (default: 1.0). - dpi_scale: 1.0 - - # Font Locator API - # Selects an engine to use for locating font files on the system. - # This is implicitly also responsible for font fallback - # Possible values are: - # - native : automatically choose the best available on the current platform - # - fontconfig : uses fontconfig to select fonts - # - CoreText : uses OS/X CoreText to select fonts. - # - DirectWrite : selects DirectWrite engine (Windows only) - locator: native - - # Text shaping related settings - text_shaping: - # Selects which text shaping and font rendering engine to use. - # Supported values are: - # - native : automatically choose the best available on the current platform. - # - DirectWrite : selects DirectWrite engine (Windows only) - # - CoreText : selects CoreText engine (Mac OS/X only) (currently not implemented) - # - OpenShaper : selects OpenShaper (harfbuzz/freetype/fontconfig, available on all - # platforms) - engine: native - - # Uses builtin textures for pixel-perfect box drawing. - # If disabled, the font's provided box drawing characters - # will be used (Default: true). - builtin_box_drawing: true - - # Font render modes tell the font rasterizer engine what rendering technique to use. - # - # Modes available are: - # - lcd Uses a subpixel rendering technique optimized for LCD displays. - # - light Uses a subpixel rendering technique in gray-scale. - # - gray Uses standard gray-scaled anti-aliasing. - # - monochrome Uses pixel-perfect bitmap rendering. - render_mode: gray - - # Indicates whether or not to include *only* monospace fonts in the font and - # font-fallback list (Default: true). - strict_spacing: false - - # Font family to use for displaying text. - # - # A font can be either described in detail as below or as a - # simple string value (e.g. "monospace" with the appropriate - # weight/slant applied automatically). - regular: - # Font family defines the font family name, such as: - # Fira Code", "Courier New", or "monospace" (default). - family: "Iosevka Term SS09 Light" - - # Font weight can be one of: - # thin, extra_light, light, demilight, book, normal, - # medium, demibold, bold, extra_bold, black, extra_black. - weight: light - - # Font slant can be one of: normal, italic, oblique. - slant: normal - - # Set of optional font features to be enabled. This - # is usually a 4-letter code, such as ss01 or ss02 etc. - # - # Please see your font's documentation to find out what it - # supports. - # - # Default: [] - features: [ss09] - - # If bold/italic/bold_italic are not explicitly specified, the regular font with - # the respective weight and slant will be used. - bold: - family: "Iosevka Term SS09" - features: [ss09] - weight: demibold - italic: - family: "Iosevka Term Curly Slab" - weight: light - slant: italic - bold_italic: - family: "Iosevka Term Curly Slab Ex" - weight: regular - slant: italic - #bold: "Hack" - #italic: "Hack" - #bold_italic: "Hack" - - # This is a special font to be used for displaying unicode symbols - # that are to be rendered in emoji presentation. - # Defaults to "emoji". - emoji: "Noto Color Emoji" - - # Indicates whether or not bold text should be rendered in bright colors, - # for indexed colors. - # - # If disabled, normal color will be used instead. - # - # Default: false - draw_bold_text_with_bright_colors: false - - # Terminal cursor display configuration - cursor: - # Supported shapes are: - # - # - block a filled rectangle - # - rectangle just the outline of a block - # - underscore a line under the text - # - bar: the well known i-Beam - shape: "bar" - # Determines whether or not the cursor will be blinking over time. - blinking: false - # Blinking interval (in milliseconds) to use when cursor is blinking. - blinking_interval: 500 - - # vi-like normal-mode specific settings. - # Note, currently only the cursor can be customized. - normal_mode: - cursor: - shape: block - blinking: false - blinking_interval: 500 - - # vi-like visual/visual-line/visual-block mode specific settings. - # Note, currently only the cursor can be customized. - visual_mode: - cursor: - shape: block - blinking: false - blinking_interval: 500 - - # Time duration in milliseconds for which yank highlight is shown. - vi_mode_highlight_timeout: 300 - - # Configures a `scrolloff` for cursor movements in normal and visual (block) modes. - # - # Default: 8 - vi_mode_scrolloff: 8 - - status_line: - # Either none or indicator. - # This only reflects the initial state of the status line, as it can - # be changed at any time during runtime by the user or by an application. - display: none - - # Position to place the status line to, if it is to be shown. - # This can be either value `top` or value `bottom`. - # Default: bottom - position: bottom - - # Synchronize the window title with the Host Writable status_line if - # and only if the host writable status line was denied to be shown. - # Default: false - sync_to_window_title: false - - # Background configuration - background: - # Background opacity to use. A value of 1.0 means fully opaque whereas 0.0 means fully - # transparent. Only values between 0.0 and 1.0 are allowed. - opacity: 1.0 - # Some platforms can blur the transparent background (currently only Windows 10 is supported). - blur: false - - # Specifies a colorscheme to use (alternatively the colors can be inlined). - colors: "default" - - # Hyperlinks (via OSC-8) can be stylized and colorized on hover. - hyperlink_decoration: - normal: dotted - hover: underline - -# Color Profiles -# -------------- -# -# Here you can configure your color profiles, whereas a color can be expressed in standard web format, -# with a leading # followed by red/green/blue values, 7 characters in total. -# You may alternatively use 0x as prefix instead of #. -# For example 0x102030 is equal to '#102030'. -color_schemes: - default: - # Default colors - default: - # Default background color (this can be made transparent, see above). - background: "#11171d" - # Default foreground text color. - foreground: "#e3e0cd" - - # Background image support. - background_image: - # Full path to the image to use as background. - # - # Default: empty string (disabled) - # path: '/Users/trapni/Pictures/bg.png' - - # Image opacity to be applied to make the image not look to intense - # and not get too distracted by the background image. - # Default: 0.5 - opacity: 0.5 - - # Optionally blurs background image to make it less distracting - # and keep the focus on the actual terminal contents. - # - # Default: false - blur: false - - # Mandates the color of the cursor and potentially overridden text. - # - # The color can be specified in RGB as usual, plus - # - CellForeground: Selects the cell's foreground color. - # - CellBackground: Selects the cell's background color. - cursor: - # Specifies the color to be used for the actual cursor shape. - # - # Default: CellForeground - default: "#00d992" - # Specifies the color to be used for the characters that would - # be covered otherwise. - # - # Default: CellBackground - text: CellBackground - - # color to pick for hyperlinks decoration, when hovering - hyperlink_decoration: - normal: "#f0f000" - hover: "#ff0000" - - # Color to pick for vi_mode highlights. - # The value format is equivalent to how selection colors and alpha contribution is defined. - vi_mode_highlight: - foreground: CellForeground - foreground_alpha: 1.0 - background: "#ffa500" - background_alpha: 0.5 - - # Color override for the current cursor's line when in vi_mode: - # The value format is equivalent to how selection colors and alpha contribution is defined. - # To disable cursorline in vi_mode, set foreground to CellForeground and background to CellBackground. - vi_mode_cursorline: - foreground: "#ffffff" - foreground_alpha: 0.2 - background: "#808080" - background_alpha: 0.4 - - # The text selection color can be customized here. - # Leaving a value empty will default to the inverse of the content's color values. - # - # The color can be specified in RGB as usual, plus - # - CellForeground: Selects the cell's foreground color. - # - CellBackground: Selects the cell's background color. - selection: - # Specifies the color to be used for the selected text. - # - # Default: CellBackground - foreground: CellForeground - # Specifies the alpha value (between 0.0 and 1.0) the configured foreground color - # will contribute to the original color. - # - # A value of 1.0 will paint over, whereas a value of 0.5 will give - # a look of a half-transparently painted grid cell. - foreground_alpha: 1.0 - # Specifies the color to be used for the selected background. - # - # Default: CellForeground - background: "#4040f0" - # Specifies the alpha value (between 0.0 and 1.0) the configured background color - # will contribute to the original color. - # - # A value of 1.0 will paint over, whereas a value of 0.5 will give - # a look of a half-transparently painted grid cell. - background_alpha: 0.5 - - # Search match highlighting. Similar to selection highlighting. - search_highlight: - foreground: CellBackground - background: CellForeground - foreground_alpha: 1.0 - background_alpha: 1.0 - - # Search match highlighting (focused term). Similar to selection highlighting. - search_highlight_focused: - foreground: CellBackground - background: CellForeground - foreground_alpha: 1.0 - background_alpha: 1.0 - - # Coloring for the word that is highlighted due to double-clicking it. - # - # The format is similar to selection highlighting. - word_highlight_current: - foreground: CellForeground - background: "#909090" - foreground_alpha: 1.0 - background_alpha: 0.5 - - # Coloring for the word that is highlighted due to double-clicking - # another word that matches this word. - # - # The format is similar to selection highlighting. - word_highlight_other: - foreground: CellForeground - background: "#909090" - foreground_alpha: 1.0 - background_alpha: 0.5 - - # Defines the colors to be used for the Indicator status line. - # Values must be in RGB form. - indicator_statusline: - # Default: default background - foreground: "#808080" - # Default: default foreground - background: "#000000" - - # Alternate colors to be used for the indicator status line when - # this terminal is currently not in focus. - indicator_statusline_inactive: - # Default: default background - foreground: "#808080" - # Default: default foreground - background: "#000000" - - # Colors for the IME (Input Method Editor) area. - input_method_editor: - # Default: default #FFFFFF - foreground: "#FFFFFF" - # Default: default #FF0000 - background: "#FF0000" - - # Normal colors - normal: - black: "#000000" - red: "#ff0035" - green: "#85ff00" - yellow: "#ffc900" - blue: "#00a7ff" - magenta: "#cb01ff" - cyan: "#00e0ff" - white: "#f0f0f0" - - # Bright colors - bright: - black: "#000000" - red: "#ffb4af" - green: "#d2ffba" - yellow: "#ffebb7" - blue: "#b1deff" - magenta: "#edb5ff" - cyan: "#bdf4ff" - white: "#ffffff" - # Dim (faint) colors, if not set, they're automatically computed based on normal colors. - # dim: - # black: '#1d1f21' - # red: '#cc342b' - # green: '#198844' - # yellow: '#fba922' - # blue: '#3971ed' - # magenta: '#a36ac7' - # cyan: '#3971ed' - # white: '#c5c8c6' - -# Key Bindings -# ------------ -# -# In this section you can customize key bindings. -# Each array element in `input_mapping` represents one key binding, -# whereas `mods` represents an array of keyboard modifiers that must be pressed - as well as -# the `key` or `mouse` - in order to activate the corresponding action, -# -# Additionally one can filter input mappings based on special terminal modes using the `modes` option: -# - Alt : The terminal is currently in alternate screen buffer, otherwise it is in primary screen buffer. -# - AppCursor : The application key cursor mode is enabled (otherwise it's normal cursor mode). -# - AppKeypad : The application keypad mode is enabled (otherwise it's the numeric keypad mode). -# - Select : The terminal has currently an active grid cell selection (such as selected text). -# - Insert : The Insert input mode is active, that is the default and one way to test -# that the input mode is not in normal mode or any of the visual select modes. -# - Search : There is a search term currently being edited or already present. -# - Trace : The terminal is currently in trace-mode, i.e., each VT sequence can be interactively -# single-step executed using custom actions. See TraceEnter/TraceStep/TraceLeave actions. -# -# You can combine these modes by concatenating them via | and negate a single one -# by prefixing with ~. -# -# The `modes` option defaults to not filter at all (the input mappings always -# match based on modifier and key press / mouse event). -# -# `key` represents keys on your keyboard, and `mouse` represents buttons -# as well as the scroll wheel. -# -# Modifiers: -# - Alt -# - Control -# - Shift -# - Meta (this is the Windows key on Windows OS, and the Command key on OS/X, and Meta on anything else) -# -# Keys can be expressed case-insensitively symbolic: -# APOSTROPHE, ADD, BACKSLASH, COMMA, DECIMAL, DIVIDE, EQUAL, LEFT_BRACKET, -# MINUS, MULTIPLY, PERIOD, RIGHT_BRACKET, SEMICOLON, SLASH, SUBTRACT, SPACE -# Enter, Backspace, Tab, Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, -# DownArrow, LeftArrow, RightArrow, UpArrow, Insert, Delete, Home, End, PageUp, PageDown, -# Numpad_NumLock, Numpad_Divide, Numpad_Multiply, Numpad_Subtract, Numpad_CapsLock, -# Numpad_Add, Numpad_Decimal, Numpad_Enter, Numpad_Equal, -# Numpad_0, Numpad_1, Numpad_2, Numpad_3, Numpad_4, -# Numpad_5, Numpad_6, Numpad_7, Numpad_8, Numpad_9 -# or in case of standard characters, just the character. -# -# Mouse buttons can be one of the following self-explanatory ones: -# Left, Middle, Right, WheelUp, WheelDown -# -# Actions: -# - CancelSelection Cancels currently active selection, if any. -# - ChangeProfile Changes the profile to the given profile `name`. -# - ClearHistoryAndReset Clears the history, performs a terminal hard reset and attempts to force a redraw of the currently running application. -# - CopyPreviousMarkRange Copies the most recent range that is delimited by vertical line marks into clipboard. -# - CopySelection Copies the current selection into the clipboard buffer. -# - DecreaseFontSize Decreases the font size by 1 pixel. -# - DecreaseOpacity Decreases the default-background opacity by 5%. -# - FocusNextSearchMatch Focuses the next search match (if any). -# - FocusPreviousSearchMatch Focuses the next previous match (if any). -# - FollowHyperlink Follows the hyperlink that is exposed via OSC 8 under the current cursor position. -# - IncreaseFontSize Increases the font size by 1 pixel. -# - IncreaseOpacity Increases the default-background opacity by 5%. -# - NewTerminal Spawns a new terminal at the current terminals current working directory. -# - NoSearchHighlight Disables current search highlighting, if anything is still highlighted due to a prior search. -# - OpenConfiguration Opens the configuration file. -# - OpenFileManager Opens the current working directory in a system file manager. -# - PasteClipboard Pastes clipboard to standard input. Pass boolean parameter 'strip' to indicate whether or not to strip repetitive whitespaces down to one and newlines to whitespaces. -# - PasteSelection Pastes current selection to standard input. -# - Quit Quits the application. -# - ReloadConfig Forces a configuration reload. -# - ResetConfig Overwrites current configuration with builtin default configuration and loads it. Attention, all your current configuration will be lost due to overwrite! -# - ResetFontSize Resets font size to what is configured in the config file. -# - ScreenshotVT Takes a screenshot in form of VT escape sequences. -# - ScrollDown Scrolls down by the multiplier factor. -# - ScrollMarkDown Scrolls one mark down (if none present, bottom of the screen) -# - ScrollMarkUp Scrolls one mark up -# - ScrollOneDown Scrolls down by exactly one line. -# - ScrollOneUp Scrolls up by exactly one line. -# - ScrollPageDown Scrolls a page down. -# - ScrollPageUp Scrolls a page up. -# - ScrollToBottom Scrolls to the bottom of the screen buffer. -# - ScrollToTop Scrolls to the top of the screen buffer. -# - ScrollUp Scrolls up by the multiplier factor. -# - SearchReverse Initiates search mode (starting to search at current cursor position, moving upwards). -# - SendChars Writes given characters in `chars` member to the applications input. -# - ToggleAllKeyMaps Disables/enables responding to all keybinds (this keybind will be preserved when disabling all others). -# - ToggleFullScreen Enables/disables full screen mode. -# - ToggleInputProtection Enables/disables terminal input protection. -# - ToggleStatusLine Shows/hides the VT320 compatible Indicator status line. -# - ToggleTitleBar Shows/Hides titlebar -# - TraceBreakAtEmptyQueue Executes any pending VT sequence from the VT sequence buffer in trace mode, then waits. -# - TraceEnter Enables trace mode, suspending execution until explicitly requested to continue (See TraceLeave and TraceStep). -# - TraceLeave Disables trace mode. Any pending VT sequence will be flushed out and normal execution will be resumed. -# - TraceStep Executes a single VT sequence that is to be executed next. -# - ViNormalMode Enters/Leaves Vi-like normal mode. The cursor can then be moved via h/j/k/l movements in normal mode and text can be selected via v, yanked via y, and clipboard pasted via p. -# - WriteScreen Writes VT sequence in `chars` member to the screen (bypassing the application). - -input_mapping: - - { mods: [Control], mouse: Left, action: FollowHyperlink } - - { mods: [], mouse: Middle, action: PasteSelection } - - { mods: [], mouse: WheelDown, action: ScrollDown } - - { mods: [], mouse: WheelUp, action: ScrollUp } - - { mods: [Alt], key: Enter, action: ToggleFullscreen } - - { mods: [Alt], mouse: WheelDown, action: DecreaseOpacity } - - { mods: [Alt], mouse: WheelUp, action: IncreaseOpacity } - - { mods: [Control, Alt], key: S, action: ScreenshotVT } - - { mods: [Control, Shift], key: Plus, action: IncreaseFontSize } - - { mods: [Control], key: "0", action: ResetFontSize } - - { mods: [Control, Shift], key: Minus, action: DecreaseFontSize } - - { mods: [Control, Shift], key: "_", action: DecreaseFontSize } - - { mods: [Control, Shift], key: N, action: NewTerminal } - - { mods: [Control, Shift], key: V, action: PasteClipboard, strip: false } - - { mods: [Control, Alt], key: V, action: PasteClipboard, strip: true } - - { mods: [Control], key: C, action: CopySelection, mode: "Select|Insert" } - - { mods: [Control], key: C, action: CancelSelection, mode: "Select|Insert" } - - { - mods: [Control], - key: V, - action: PasteClipboard, - strip: false, - mode: "Select|Insert", - } - - { mods: [Control], key: V, action: CancelSelection, mode: "Select|Insert" } - - { mods: [], key: Escape, action: CancelSelection, mode: "Select|Insert" } - - { mods: [Control, Shift], key: Space, action: ViNormalMode, mode: "Insert" } - - { mods: [Control, Shift], key: Comma, action: OpenConfiguration } - - { mods: [Control, Shift], key: Q, action: Quit } - - { mods: [Control], mouse: WheelDown, action: DecreaseFontSize } - - { mods: [Control], mouse: WheelUp, action: IncreaseFontSize } - - { mods: [Shift], key: DownArrow, action: ScrollOneDown } - - { mods: [Shift], key: End, action: ScrollToBottom } - - { mods: [Shift], key: Home, action: ScrollToTop } - - { mods: [Shift], key: PageDown, action: ScrollPageDown } - - { mods: [Shift], key: PageUp, action: ScrollPageUp } - - { mods: [Shift], key: UpArrow, action: ScrollOneUp } - - { mods: [Control, Alt], key: K, action: ScrollMarkUp, mode: "~Alt" } - - { mods: [Control, Alt], key: J, action: ScrollMarkDown, mode: "~Alt" } - - { mods: [Shift], mouse: WheelDown, action: ScrollPageDown } - - { mods: [Shift], mouse: WheelUp, action: ScrollPageUp } - - { mods: [Control, Alt], key: O, action: OpenFileManager } - - { mods: [Control, Alt], key: ".", action: ToggleStatusLine } - - { mods: [Control, Shift], key: "F", action: SearchReverse } - - { mods: [Control, Shift], key: "H", action: NoSearchHighlight } - - { mods: [], key: "F3", action: FocusNextSearchMatch } - - { mods: [Shift], key: "F3", action: FocusPreviousSearchMatch } -# - { mods: [Control, Meta], key: 'E', action: TraceEnter, mode: "~Trace" } -# - { mods: [Control, Meta], key: 'E', action: TraceLeave, mode: "Trace" } -# - { mods: [Control, Meta], key: 'N', action: TraceStep, mode: "Trace" } -# - { mods: [Control, Meta], key: 'F', action: TraceBreakAtEmptyQueue, mode: "Trace" } diff --git a/.config/efm-langserver/config.yaml b/.config/efm-langserver/config.yaml deleted file mode 100644 index a7b4c56..0000000 --- a/.config/efm-langserver/config.yaml +++ /dev/null @@ -1,14 +0,0 @@ -version: 2 -root-markers: -- .git/ - -tools: - clang-format: &clang-format - format-command: 'clang-format -style="{BasedOnStyle: Google, IndentWidth: 2, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}"' - format-stdin: true - -languages: - proto: - - <<: *clang-format - - diff --git a/.config/environment.d/difftastic.conf b/.config/environment.d/difftastic.conf deleted file mode 100644 index b58731b..0000000 --- a/.config/environment.d/difftastic.conf +++ /dev/null @@ -1 +0,0 @@ -DFT_BACKGROUND=light diff --git a/.config/environment.d/docker.conf b/.config/environment.d/docker.conf deleted file mode 100644 index 1747f14..0000000 --- a/.config/environment.d/docker.conf +++ /dev/null @@ -1 +0,0 @@ -DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/podman/podman.sock diff --git a/.config/environment.d/golang.conf b/.config/environment.d/golang.conf deleted file mode 100644 index ecea26b..0000000 --- a/.config/environment.d/golang.conf +++ /dev/null @@ -1 +0,0 @@ -GOPROXY=https://athens.aarn.shelman.io diff --git a/.config/environment.d/mozilla.conf b/.config/environment.d/mozilla.conf deleted file mode 100644 index e165145..0000000 --- a/.config/environment.d/mozilla.conf +++ /dev/null @@ -1,2 +0,0 @@ -MOZ_ENABLE_WAYLAND=1 -MOZ_DISABLE_RDD_SANDBOX=1 diff --git a/.config/environment.d/otel.conf b/.config/environment.d/otel.conf deleted file mode 100644 index 08d9968..0000000 --- a/.config/environment.d/otel.conf +++ /dev/null @@ -1,3 +0,0 @@ -OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.aarn.shelman.io -OTEL_RESOURCE_ATTRIBUTES=instance=dln-dev -OTEL_LOG_LEVEL=debug diff --git a/.config/environment.d/ssh.conf b/.config/environment.d/ssh.conf deleted file mode 100644 index cae7205..0000000 --- a/.config/environment.d/ssh.conf +++ /dev/null @@ -1 +0,0 @@ -SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gcr/ssh diff --git a/.config/fish/conf.d/abbr.fish b/.config/fish/conf.d/abbr.fish deleted file mode 100644 index 0eaf442..0000000 --- a/.config/fish/conf.d/abbr.fish +++ /dev/null @@ -1,6 +0,0 @@ -abbr --add b git branch -va -abbr --add d git diff --stat -p -C --color-words -abbr --add new git checkout --detach main -abbr --add s git status -sb -abbr --add sl git branchless smartlog -abbr --add sw git branchless switch --interactive diff --git a/.config/fish/conf.d/aliases.fish b/.config/fish/conf.d/aliases.fish deleted file mode 100644 index d2d3ddb..0000000 --- a/.config/fish/conf.d/aliases.fish +++ /dev/null @@ -1,10 +0,0 @@ -alias e='wezterm-edit-helper' -alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git' -alias git='git-branchless wrap --' -alias l='bat --wrap=never --pager="less -S"' -alias ls=eza -alias tail='tail -n $LINES' -alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"' -alias top='btm --basic --enable_cache_memory --enable_gpu_memory --battery' -alias w="history -1 | sed -e 's/[0-9]* //' | xargs viddy -n1" -alias xc=fish_clipboard_copy diff --git a/.config/fish/conf.d/prompt.fish b/.config/fish/conf.d/prompt.fish deleted file mode 100644 index c246201..0000000 --- a/.config/fish/conf.d/prompt.fish +++ /dev/null @@ -1,91 +0,0 @@ -function fish_prompt - switch "$fish_key_bindings" - case fish_hybrid_key_bindings fish_vi_key_bindings - set STARSHIP_KEYMAP "$fish_bind_mode" - case '*' - set STARSHIP_KEYMAP insert - end - set STARSHIP_CMD_PIPESTATUS $pipestatus - set STARSHIP_CMD_STATUS $status - # Account for changes in variable name between v2.7 and v3.0 - set STARSHIP_DURATION "$CMD_DURATION$cmd_duration" - set STARSHIP_JOBS (count (jobs -p)) - if test "$TRANSIENT" = 1 - # Clear from cursor to end of screen as `commandline -f repaint` does not do this - # See https://github.com/fish-shell/fish-shell/issues/8418 - printf \e\[0J - if type -q starship_transient_prompt_func - starship_transient_prompt_func - else - printf "\n\e[1;32m%%\e[0m " - end - else - starship prompt --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS - end -end - -function fish_right_prompt - switch "$fish_key_bindings" - case fish_hybrid_key_bindings fish_vi_key_bindings - set STARSHIP_KEYMAP "$fish_bind_mode" - case '*' - set STARSHIP_KEYMAP insert - end - set STARSHIP_CMD_PIPESTATUS $pipestatus - set STARSHIP_CMD_STATUS $status - # Account for changes in variable name between v2.7 and v3.0 - set STARSHIP_DURATION "$CMD_DURATION$cmd_duration" - set STARSHIP_JOBS (count (jobs -p)) - if test "$TRANSIENT" = 1 - if type -q starship_transient_rprompt_func - starship_transient_rprompt_func - else - printf "" - end - else - starship prompt --right --terminal-width="$COLUMNS" --status=$STARSHIP_CMD_STATUS --pipestatus="$STARSHIP_CMD_PIPESTATUS" --keymap=$STARSHIP_KEYMAP --cmd-duration=$STARSHIP_DURATION --jobs=$STARSHIP_JOBS - end -end - -# Disable virtualenv prompt, it breaks starship -set -g VIRTUAL_ENV_DISABLE_PROMPT 1 - -# Remove default mode prompt -builtin functions -e fish_mode_prompt - -set -gx STARSHIP_SHELL fish - -# Transience related functions -function reset-transient --on-event fish_postexec - set -g TRANSIENT 0 -end - -function transient_execute - if commandline --is-valid - set -g TRANSIENT 1 - commandline -f repaint - else - set -g TRANSIENT 0 - end - commandline -f execute -end - -# --user is the default, but listed anyway to make it explicit. -function enable_transience --description 'enable transient prompt keybindings' - bind --user \r transient_execute - bind --user -M insert \r transient_execute -end - -# Erase the transient prompt related key bindings. -# --user is the default, but listed anyway to make it explicit. -# Erasing a user binding will revert to the preset. -function disable_transience --description 'remove transient prompt keybindings' - bind --user -e \r - bind --user -M insert -e \r -end - -# Set up the session key that will be used to store logs -# We don't use `random [min] [max]` because it is unavailable in older versions of fish shell -set -gx STARSHIP_SESSION_KEY (string sub -s1 -l16 (random)(random)(random)(random)(random)0000000000000000) - -enable_transience diff --git a/.config/fish/conf.d/semantic-prompt.fish b/.config/fish/conf.d/semantic-prompt.fish deleted file mode 100644 index 23947c4..0000000 --- a/.config/fish/conf.d/semantic-prompt.fish +++ /dev/null @@ -1,56 +0,0 @@ -# SPDX-License-Identifier: CC0-1.0 -if status --is-interactive - set _fishprompt_aid "fish"$fish_pid - set _fishprompt_started 0 - # empty if running; or a numeric exit code; or CANCEL - set _fishprompt_postexec "" - - functions -c fish_prompt _fishprompt_saved_prompt - set _fishprompt_prompt_count 0 - set _fishprompt_disp_count 0 - function _fishprompt_start --on-event fish_prompt - set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1) - # don't use post-exec, because it is called *before* omitted-newline output - if [ -n "$_fishprompt_postexec" ] - printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid - end - printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid - end - - function fish_prompt - set _fishprompt_disp_count (math $_fishprompt_disp_count + 1) - printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt)) - set _fishprompt_started 1 - set _fishprompt_postexec "" - end - - function _fishprompt_preexec --on-event fish_preexec - if [ "$_fishprompt_started" = 1 ] - printf "\033]133;C;\007" - end - set _fishprompt_started 0 - end - - function _fishprompt_postexec --on-event fish_postexec - set _fishprompt_postexec $status - _fishprompt_start - end - - function __fishprompt_cancel --on-event fish_cancel - set _fishprompt_postexec CANCEL - _fishprompt_start - end - - function _fishprompt_exit --on-process %self - if [ "$_fishprompt_started" = 1 ] - printf "\033]133;Z;aid=%s\007" $_fishprompt_aid - end - end - - if functions -q fish_right_prompt - functions -c fish_right_prompt _fishprompt_saved_right_prompt - function fish_right_prompt - printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt)) - end - end -end diff --git a/.config/fish/conf.d/task.fish b/.config/fish/conf.d/task.fish deleted file mode 100644 index ee2d0a5..0000000 --- a/.config/fish/conf.d/task.fish +++ /dev/null @@ -1,37 +0,0 @@ -set GO_TASK_PROGNAME task - -function __task_get_tasks --description "Prints all available tasks with their description" - # Read the list of tasks (and potential errors) - $GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput - - # Return on non-zero exit code (for cases when there is no Taskfile found or etc.) - if test $status -ne 0 - return - end - - # Grab names and descriptions (if any) of the tasks - set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0) - if test $output - echo $output - end -end - -complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was -specified.' -xa "(__task_get_tasks)" - -complete -c $GO_TASK_PROGNAME -s c -l color -d 'colored output (default true)' -complete -c $GO_TASK_PROGNAME -s d -l dir -d 'sets directory of execution' -complete -c $GO_TASK_PROGNAME -l dry -d 'compiles and prints tasks in the order that they would be run, without executing them' -complete -c $GO_TASK_PROGNAME -s f -l force -d 'forces execution even when the task is up-to-date' -complete -c $GO_TASK_PROGNAME -s h -l help -d 'shows Task usage' -complete -c $GO_TASK_PROGNAME -s i -l init -d 'creates a new Taskfile.yml in the current folder' -complete -c $GO_TASK_PROGNAME -s l -l list -d 'lists tasks with description of current Taskfile' -complete -c $GO_TASK_PROGNAME -s o -l output -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed" -complete -c $GO_TASK_PROGNAME -s p -l parallel -d 'executes tasks provided on command line in parallel' -complete -c $GO_TASK_PROGNAME -s s -l silent -d 'disables echoing' -complete -c $GO_TASK_PROGNAME -l status -d 'exits with non-zero exit code if any of the given tasks is not up-to-date' -complete -c $GO_TASK_PROGNAME -l summary -d 'show summary about a task' -complete -c $GO_TASK_PROGNAME -s t -l taskfile -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"' -complete -c $GO_TASK_PROGNAME -s v -l verbose -d 'enables verbose mode' -complete -c $GO_TASK_PROGNAME -l version -d 'show Task version' -complete -c $GO_TASK_PROGNAME -s w -l watch -d 'enables watch of the given task' diff --git a/.config/fish/conf.d/zoxide.fish b/.config/fish/conf.d/zoxide.fish deleted file mode 100644 index fa10e76..0000000 --- a/.config/fish/conf.d/zoxide.fish +++ /dev/null @@ -1,100 +0,0 @@ -# ============================================================================= -# -# Utility functions for zoxide. -# - -# pwd based on the value of _ZO_RESOLVE_SYMLINKS. -function __zoxide_pwd - builtin pwd -L -end - -# A copy of fish's internal cd function. This makes it possible to use -# `alias cd=z` without causing an infinite loop. -if ! builtin functions --query __zoxide_cd_internal - if builtin functions --query cd - builtin functions --copy cd __zoxide_cd_internal - else - alias __zoxide_cd_internal='builtin cd' - end -end - -# cd + custom logic based on the value of _ZO_ECHO. -function __zoxide_cd - __zoxide_cd_internal $argv -end - -# ============================================================================= -# -# Hook configuration for zoxide. -# - -# Initialize hook to add new entries to the database. -function __zoxide_hook --on-variable PWD - test -z "$fish_private_mode" - and command zoxide add -- (__zoxide_pwd) -end - -# ============================================================================= -# -# When using zoxide with --no-cmd, alias these internal functions as desired. -# - -if test -z $__zoxide_z_prefix - set __zoxide_z_prefix 'z!' -end -set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix) - -# Jump to a directory using only keywords. -function __zoxide_z - set -l argc (count $argv) - if test $argc -eq 0 - __zoxide_cd $HOME - else if test "$argv" = - - __zoxide_cd - - else if test $argc -eq 1 -a -d $argv[1] - __zoxide_cd $argv[1] - else if set -l result (string replace --regex $__zoxide_z_prefix_regex '' $argv[-1]); and test -n $result - __zoxide_cd $result - else - set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv) - and __zoxide_cd $result - end -end - -# Completions. -function __zoxide_z_complete - set -l tokens (commandline --current-process --tokenize) - set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize) - - if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1 - # If there are < 2 arguments, use `cd` completions. - complete --do-complete "'' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$' - else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1] - # If the last argument is empty and the one before doesn't start with - # $__zoxide_z_prefix, use interactive selection. - set -l query $tokens[2..-1] - set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query) - and echo $__zoxide_z_prefix$result - commandline --function repaint - end -end -complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)' - -# Jump to a directory using interactive search. -function __zoxide_zi - set -l result (command zoxide query --interactive -- $argv) - and __zoxide_cd $result -end - -# ============================================================================= -# -# Commands for zoxide. Disable these using --no-cmd. -# - -abbr --erase cd &>/dev/null -alias cd=__zoxide_z - -abbr --erase cdi &>/dev/null -alias cdi=__zoxide_zi - -set -gx _ZO_EXCLUDE_DIRS "$HOME/media:$HOME/media/*" diff --git a/.config/fish/config.fish b/.config/fish/config.fish deleted file mode 100644 index 00991a5..0000000 --- a/.config/fish/config.fish +++ /dev/null @@ -1,71 +0,0 @@ -set fish_greeting -set fish_emoji_width 2 - -fish_add_path $HOME/.cargo/bin -fish_add_path $HOME/bin - -if status is-interactive - - ## Pager - set -gx LESS "--mouse --wheel-lines=1 -nRXF" - set -gx LESSCOLORIZER bat - set -gx LESSOPEN "|lesspipe.sh %s" - set -gx PAGER bat - set -gx BAT_PAGER "less -r" - - ## OpenTelemetry - set -gx OTEL_EXPORTER_OTLP_ENDPOINT https://otel.aarn.shelman.io - set -gx OTEL_RESOURCE_ATTRIBUTES instance=dln-dev - set -gx OTEL_LOG_LEVEL debug - - ## Utilities - - set -gx EDITOR (which nvim) - set -gx VISUAL $EDITOR - set -gx SUDO_EDITOR $EDITOR - - function tree - eza --tree --color=always $argv | bat --wrap=never - end - - bind \cg __zoxide_zi - - function git_jump - set _dir $(git rev-parse --show-toplevel 2>/dev/null || pwd) - if [ "$_dir" = "$PWD" ] - #set _dir $(br -f --conf ~/.config/broot/select.hjson) - set _dir $(br -f --conf "$HOME/.config/broot/conf.hjson") - end - [ -n "$_dir" ] && pushd $_dir >>/dev/null - commandline -f repaint - end - bind \c_ git_jump - - function git_broot - br $(git rev-parse --show-toplevel 2>/dev/null || pwd) - commandline -f repaint - end - - bind \ee git_broot - bind \eg gitui - - - ## Kubernetes - fish_add_path $HOME/.krew/bin - # function kubectl --wraps kubectl - # command kubecolor $argv - # end - - ## History - - # FIXME: how to use autin history for these? - bind \cn history-prefix-search-forward - bind \cp history-prefix-search-backward - # bind \cP _atuin_bind_up - bind \cJ forward-char - - atuin init fish | source -end - -## Direnv -direnv hook fish | source diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables deleted file mode 100644 index 10b98ea..0000000 --- a/.config/fish/fish_variables +++ /dev/null @@ -1,48 +0,0 @@ -# This file contains fish universal variable definitions. -# VERSION: 3.0 -SETUVAR __fish_initialized:3400 -SETUVAR fish_color_autosuggestion:\x2d\x2ditalics\x1e\x2d\x2dbold\x1ered -SETUVAR fish_color_cancel:\x1d -SETUVAR fish_color_command:\x2d\x2dbold -SETUVAR fish_color_comment:\x2d\x2ditalic\x1e\x2d\x2ddim -SETUVAR fish_color_cwd:normal -SETUVAR fish_color_cwd_root:normal -SETUVAR fish_color_end:\x1d -SETUVAR fish_color_error:\x1d -SETUVAR fish_color_escape:\x1d -SETUVAR fish_color_gray:6c7086 -SETUVAR fish_color_history_current:\x1d -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_keyword:\x1d -SETUVAR fish_color_match:\x1d -SETUVAR fish_color_normal:normal -SETUVAR fish_color_operator:\x1d -SETUVAR fish_color_option:\x1d -SETUVAR fish_color_param:normal -SETUVAR fish_color_quote:\x2d\x2ditalics -SETUVAR fish_color_redirection:\x1d -SETUVAR fish_color_search_match:\x2dr -SETUVAR fish_color_selection:\x2dr -SETUVAR fish_color_status:normal -SETUVAR fish_color_string:\x2d\x2ditalics -SETUVAR fish_color_user:normal -SETUVAR fish_color_valid_path:\x1d -SETUVAR fish_cursor_default:line -SETUVAR fish_cursor_normal:line -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_background:\x1d -SETUVAR fish_pager_color_completion:normal -SETUVAR fish_pager_color_description:brblack -SETUVAR fish_pager_color_prefix:\x2d\x2dunderline -SETUVAR fish_pager_color_progress:brblack -SETUVAR fish_pager_color_secondary_background:\x1d -SETUVAR fish_pager_color_secondary_completion:\x1d -SETUVAR fish_pager_color_secondary_description:\x1d -SETUVAR fish_pager_color_secondary_prefix:\x1d -SETUVAR fish_pager_color_selected_background:\x2dr -SETUVAR fish_pager_color_selected_completion:\x1d -SETUVAR fish_pager_color_selected_description:\x1d -SETUVAR fish_pager_color_selected_prefix:\x1d -SETUVAR fish_user_paths:/home/dln/\x2enix\x2dprofile/bin\x1e/home/dln/\x2ekrew/bin\x1e/home/dln/bin\x1e/home/dln/\x2ecargo/bin -SETUVAR --export theme:Catppuccin\x20Latte diff --git a/.config/fish/themes/Catppuccin Mocha.theme b/.config/fish/themes/Catppuccin Mocha.theme deleted file mode 100644 index 104281b..0000000 --- a/.config/fish/themes/Catppuccin Mocha.theme +++ /dev/null @@ -1,30 +0,0 @@ -# name: 'Catppuccin mocha' -# url: 'https://github.com/catppuccin/fish' -# preferred_background: 1e1e2e - -fish_color_normal cdd6f4 -fish_color_command 89b4fa -fish_color_param f2cdcd -fish_color_keyword f38ba8 -fish_color_quote a6e3a1 -fish_color_redirection f5c2e7 -fish_color_end fab387 -fish_color_comment 7f849c --italics --dim -fish_color_error f38ba8 -fish_color_gray 6c7086 -fish_color_selection --background=313244 -fish_color_search_match --background=313244 -fish_color_option a6e3a1 -fish_color_operator f5c2e7 -fish_color_escape eba0ac -fish_color_autosuggestion 6c7086 -fish_color_cancel f38ba8 -fish_color_cwd f9e2af -fish_color_user 94e2d5 -fish_color_host 89b4fa -fish_color_host_remote a6e3a1 -fish_color_status f38ba8 -fish_pager_color_progress 6c7086 -fish_pager_color_prefix f5c2e7 -fish_pager_color_completion cdd6f4 -fish_pager_color_description 6c7086 diff --git a/.config/git/allowed_signers b/.config/git/allowed_signers deleted file mode 100644 index 42c52d6..0000000 --- a/.config/git/allowed_signers +++ /dev/null @@ -1,3 +0,0 @@ -dln@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo= -daniel@arity.se sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo= -dln@shelman.io sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFtd5SEEgKWzR6617GqxhSIi//4Afq7iRP0ny6fbwU7kAAAABHNzaDo= diff --git a/.config/git/signing-key.sh b/.config/git/signing-key.sh deleted file mode 100755 index aed9246..0000000 --- a/.config/git/signing-key.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -ssh-add -L | awk '/^sk-ssh/ { print "key::" $1 " " $2 }' diff --git a/.config/helix/config.toml b/.config/helix/config.toml deleted file mode 100644 index c789a38..0000000 --- a/.config/helix/config.toml +++ /dev/null @@ -1,52 +0,0 @@ -theme = "sumi-e" -# theme = "github_light" - -[editor] -true-color = true -undercurl = true -cursorline = true -color-modes = true -auto-pairs = false -popup-border = "all" -rulers = [80] -gutters = ["diagnostics", "line-numbers", "spacer", "diff", "spacer"] - -[editor.cursor-shape] -insert = "bar" -normal = "block" -select = "underline" - -[editor.indent-guides] -character = "│" # "╎" -render = true -skip-levels = 1 - -[editor.statusline] -separator = "│" -mode.normal = " " -mode.insert = " " -mode.select = "󰒅 " -left = ["spinner", "mode", "diagnostics"] -center = ["file-name", "file-encoding"] -right = ["version-control", "separator", "selections", "register", "separator", "position"] - -[editor.lsp] -display-inlay-hints = true -display-messages = true - -[keys.normal] -backspace = "delete_char_backward" -C-h = "delete_char_backward" -C = ["select_mode", "goto_line_end", "normal_mode", "change_selection_noyank"] -H = ":toggle lsp.display-inlay-hints" -Z = { Z = ":write-quit-all" } -esc = ["keep_primary_selection", "collapse_selection"] -"`" = ["goto_last_accessed_file"] -tab = ["buffer_picker"] -C-r = ":config-reload" -C-f = [":new", ":insert-output lf -selection-path=/dev/stdout", "split_selection_on_newline", "goto_file", "goto_last_modification", "goto_last_modified_file", ":buffer-close!", ":redraw"] -V = ["goto_first_nonwhitespace", "extend_to_line_end"] -x = "extend_line" - -[keys.select] -x = "extend_line" diff --git a/.config/helix/languages.toml b/.config/helix/languages.toml deleted file mode 100644 index 1193075..0000000 --- a/.config/helix/languages.toml +++ /dev/null @@ -1,46 +0,0 @@ -[[language]] -name = "rust" -auto-format = true -roots = [ - "Cargo.toml", - "Cargo.lock" -] -language-servers = [ - "rust-analyzer", - "gpt", -] - -[[language]] -name = "go" -language-servers = [ - "gopls", - "gpt", -] - -[language.auto-pairs] -'(' = ')' -'{' = '}' -'[' = ']' -'"' = '"' -'`' = '`' - -[language-server.rust-analyzer] -command = "rust-analyzer" - -[language-server.rust-analyzer.config.inlayHints] -bindingModeHints.enable = false -chainingHints.enable = false -# closingBraceHints.enable = false -closingBraceHints.minLines = 10 -closureReturnTypeHints.enable = "with_block" -# discriminantHints.enable = "fieldless" -discriminantHints.enable = "always" -lifetimeElisionHints.enable = "skip_trivial" -parameterHints.enable = true -typeHints.enable = true -typeHints.hideClosureInitialization = false - -[language-server.gpt] -command = "helix-gpt" -args = ["--handler", "copilot", "--logFile", "/home/dln/.cache/helix/helix-gpt.log"] - diff --git a/.config/helix/themes/sumi-e.toml b/.config/helix/themes/sumi-e.toml deleted file mode 100644 index d7a73c7..0000000 --- a/.config/helix/themes/sumi-e.toml +++ /dev/null @@ -1,193 +0,0 @@ - -# GENERAL ============================== - -warning = { fg = "#ff7700", bg = "#221100", modifierd = [ "italic" ] } -error = { fg = "#ff0038", bg = "#220000", modifiers = [ "italic" ] } -hint = { fg = "#00d992", bg = "#002211", modifierd = [ "italic" ] } -info = { fg = "#ffcc00", bg = "#222200", modifiers = ["italic"] } -diagnostic = { fg = "#c49848"} -"diagnostic.info" = { underline = { color = "#ffcc00", style = "curl" } } -"diagnostic.hint" = { fg = "#00d992", underline = { color = "#00d992", style = "curl" } } -"diagnostic.warning" = { fg = "#ff7700", underline = { color = "#ff7700", style = "curl" } } -"diagnostic.error" = { fg = "#ff0038", underline = { color = "#ff0038", style = "curl" } } -"diagnostic.unnecessary" = { fg = "#ffcc00", modifiers = ["dim", "italic"], underline = { style = "curl" } } -"diagnostic.deprecated" = { modifiers = ["crossed_out"] } - - -# UI ============================== -# For styling helix itself. - -'ui.background' = { bg="background" } -'ui.background.separator' = { fg="#00a171" } -'ui.window' = { bg="#224466" } -'ui.gutter' = { bg="#11171d" } - -'ui.text' = { fg = "#cccccc" } -'ui.text.focus' = { bg = "#294467" } -'ui.text.info' = { } - -'ui.cursor' = { bg = "#00a171", fg = "#000000" } -'ui.cursor.primary' = { bg ="#23fdb6", fg = "#000000" } -'ui.cursor.insert' = { fg = "#ff0000" } -'ui.cursor.select' = { fg = "#3399ff" } -'ui.cursor.match' = { fg = "#000000", bg = "#ffd54f" } -'ui.cursorline.primary' = { bg = "#141b23" } - -'ui.selection' = { bg = "#294467" } -'ui.selection.primary' = { bg = "#294467" } - -'ui.linenr' = { fg = "#374351", modifiers = [ "bold", "italic" ] } -'ui.linenr.selected' = { fg = "#617d9d", bg = "#14202e" } - -'ui.virtual' = { } -"ui.virtual.indent-guide" = { fg = "#273341" } -"ui.virtual.inlay-hint" = { fg = "#51a0cf", modifiers = ["italic", "bold"] } -'ui.virtual.ruler' = { bg = "#11171d" } -'ui.virtual.whitespace' = { } -'ui.virtual.wrap' = { fg = "#ffd54f" } -"ui.virtual.jump-label" = { fg = "#96ffe6", bg = "#051e33", modifiers = ["bold", "italic"] } - -# 'ui.statusline' = { bg = "#151920", fg = "#4d5a6c" } -'ui.statusline' = { bg = "#11171d", fg = "#637184", modifiers = ["italic", "bold"] } -'ui.statusline.inactive' = { } -"ui.statusline.normal" = { } -"ui.statusline.insert" = { fg = "#d7b640" } -"ui.statusline.select" = { fg = "#3dc9ff" } - -'ui.help' = { } - -'ui.highlight' = { bg="#224466" } -"ui.highlight.frameline" = { } - -'ui.menu' = { bg = "#242d38", fg="#bfd5e2" } -'ui.menu.selected' = { bg = "#135d7e" } - -'ui.popup' = { bg = "#253d6b", fg="#b2c6e9" } -'ui.popup.info' = { } - - -# SYNTAX HIGHLIGHTING ============================== -# All the keys here are Treesitter scopes. - -'property' = { } -'special' = { fg="#ffecd3" } -'attribute' = { } - -'type' = { } -'type.builtin' = { } -'type.enum.variant' = { } - -'constructor' = { } - -'constant' = { } -'constant.builtin' = { } -'constant.builtin.boolean' = { } -'constant.character' = { } -'constant.character.escape' = { } -'constant.numeric' = { } -'constant.numeric.integer' = { } -'constant.numeric.float' = { } - -'string' = { fg="#88ab8a", modifiers=["italic"] } -'string.regexp' = { } -'string.special' = { } -'string.special.path' = { } -'string.special.url' = { } -'string.special.symbol' = { } - -'comment' = { fg = "#e57373", modifiers = ["bold", "italic"] } -'comment.line' = { } -'comment.block' = { } -'comment.block.documentation' = { } - -'variable' = { fg="#999999", modifiers = [ "italic" ] } -# 'variable.builtin' = { } -'variable.parameter' = { fg = "#eeccaa", modifiers = [ "italic" ] } -# 'variable.other.member' = { } - -'label' = { } - -'punctuation' = { fg = "#b0bec5" } -'punctuation.delimiter' = { fg = "#b0bec5" } -'punctuation.bracket' = { fg = "#b0bec5" } - -'keyword' = { fg = "#d5d5d5" } -# 'keyword.control' = { } -# 'keyword.control.conditional' = { } -# 'keyword.control.repeat' = { } -# 'keyword.control.import' = { } -# 'keyword.control.return' = { } -# 'keyword.control.exception' = { } -# 'keyword.operator' = { } -# 'keyword.directive' = { } -# 'keyword.function' = { } - -'operator' = { } - -'function' = { fg = "#f7f7f7" } -'function.builtin' = { } -'function.method' = { } -'function.macro' = { } -'function.special' = { } - -'tag' = { } -'tag.error' = { } - -'namespace' = { fg = "#b0bec5" } - - -# Markup ============================== -# Colors for markup languages, like Markdown or XML. - -'markup.heading.1' = { } -'markup.heading.2' = { } -'markup.heading.3' = { } -'markup.heading.4' = { } -'markup.heading.5' = { } -'markup.heading.6' = { } -'markup.heading.marker' = { } - -'markup.list' = { } -'markup.list.numbered' = { } -'markup.list.unnumbered' = { } - -'markup.bold' = { } -'markup.italic' = { } - -'markup.link' = { } -'markup.link.url' = { } -'markup.link.label' = { } -'markup.link.text' = { } - -'markup.quote' = { } - - -# Markup - Interface ============================== -# "These scopes are used for theming the editor interface." - -'markup.normal' = { } -'markup.normal.completion' = { } -'markup.normal.raw' = { } - -'markup.heading.completion' = { } -'markup.heading.raw' = { } - -'markup.raw' = { } -'markup.raw.block' = { } -'markup.raw.inline' = { } -'markup.raw.inline.completion' = { } -'markup.raw.inline.hover' = { } - -# Diff ============================== -# Version control changes. - -'diff.plus' = { fg = "#678350" } -'diff.minus' = { fg = "#ff0038" } -'diff.delta' = { fg = "#897a21" } -'diff.delta.gutter' = { fg = "#ffff00" } -# 'diff.delta.moved' = { } - - -[palette] # Define your custom colors here. -white = '#ffffff' - diff --git a/.config/k9s/config.yaml b/.config/k9s/config.yaml deleted file mode 100644 index f80e58d..0000000 --- a/.config/k9s/config.yaml +++ /dev/null @@ -1,42 +0,0 @@ -k9s: - liveViewAutoRefresh: false - screenDumpDir: /home/dln/.local/state/k9s/screen-dumps - refreshRate: 2 - maxConnRetry: 5 - readOnly: false - noExitOnCtrlC: false - ui: - enableMouse: false - headless: true - logoless: true - crumbsless: true - reactive: false - noIcons: false - defaultsToFullScreen: true - skin: dieter - skipLatestRevCheck: false - disablePodCounting: false - shellPod: - image: busybox:1.35.0 - namespace: default - limits: - cpu: 100m - memory: 100Mi - imageScans: - enable: false - exclusions: - namespaces: [] - labels: {} - logger: - tail: 100 - buffer: 5000 - sinceSeconds: -1 - textWrap: false - showTime: false - thresholds: - cpu: - critical: 90 - warn: 70 - memory: - critical: 90 - warn: 70 diff --git a/.config/k9s/plugins.yaml b/.config/k9s/plugins.yaml deleted file mode 100644 index 59b9f8c..0000000 --- a/.config/k9s/plugins.yaml +++ /dev/null @@ -1,22 +0,0 @@ -plugins: - raw-logs-follow: - shortCut: Shift-L - description: kubectl logs - scopes: - - po - command: bash - background: false - args: - - -c - - | - kubectl logs $NAME -n $NAMESPACE --context $CONTEXT | bat --wrap=never --pager="less" --force-colorization - toolbox: - shortCut: Shift-K - description: ktoolbox in current namespace - scopes: - - all - command: ktoolbox - background: false - args: - - -n - - $NAMESPACE diff --git a/.config/k9s/skins/dieter.yaml b/.config/k9s/skins/dieter.yaml deleted file mode 100644 index 46c9a99..0000000 --- a/.config/k9s/skins/dieter.yaml +++ /dev/null @@ -1,76 +0,0 @@ -# Dieter - -k9s: - body: - fgColor: default - bgColor: default - logoColor: default - prompt: - fgColor: default - bgColor: default - suggestColor: default - info: - fgColor: default - sectionColor: default - dialog: - fgColor: default - bgColor: default - buttonFgColor: default - buttonBgColor: default - buttonFocusFgColor: white - buttonFocusBgColor: darkblue - labelFgColor: default - fieldFgColor: default - frame: - border: - fgColor: default - focusColor: default - menu: - fgColor: default - keyColor: default - numKeyColor: default - crumbs: - fgColor: default - bgColor: default - activeColor: default - status: - newColor: default - modifyColor: default - addColor: default - errorColor: red - highlightColor: default - killColor: default - completedColor: default - title: - fgColor: default - bgColor: default - highlightColor: default - counterColor: default - filterColor: default - views: - table: - fgColor: default - bgColor: default - cursorFgColor: teal - cursorBgColor: darkblue - header: - fgColor: default - bgColor: default - sorterColor: blue - xray: - fgColor: default - bgColor: default - cursorColor: blue - graphicColor: blue - yaml: - keyColor: default - colonColor: default - valueColor: default - logs: - fgColor: default - bgColor: default - indicator: - fgColor: default - bgColor: default - toggleOnColor: default - toggleOffColor: default diff --git a/.config/nerdctl/nerdctl.toml b/.config/nerdctl/nerdctl.toml deleted file mode 100644 index 6bbbda3..0000000 --- a/.config/nerdctl/nerdctl.toml +++ /dev/null @@ -1,3 +0,0 @@ -debug_full = false -snapshotter = "native" -insecure_registry = false diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json deleted file mode 100644 index 05f524f..0000000 --- a/.config/nvim/lazyvim.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extras": [ - "lazyvim.plugins.extras.dap.core", - "lazyvim.plugins.extras.formatting.prettier", - "lazyvim.plugins.extras.lang.go", - "lazyvim.plugins.extras.lang.json", - "lazyvim.plugins.extras.lang.markdown", - "lazyvim.plugins.extras.lang.nix", - "lazyvim.plugins.extras.lang.rust", - "lazyvim.plugins.extras.lang.toml", - "lazyvim.plugins.extras.lang.typescript", - "lazyvim.plugins.extras.lang.yaml", - "lazyvim.plugins.extras.lsp.none-ls", - "lazyvim.plugins.extras.test.core", - "lazyvim.plugins.extras.ui.edgy", - "lazyvim.plugins.extras.ui.treesitter-context", - "lazyvim.plugins.extras.util.gitui", - "lazyvim.plugins.extras.util.project" - ], - "news": { - "NEWS.md": "6077" - }, - "version": 6 -} \ No newline at end of file diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua deleted file mode 100644 index 1185b23..0000000 --- a/.config/nvim/lua/plugins/editor.lua +++ /dev/null @@ -1,71 +0,0 @@ -return { - { - "folke/flash.nvim", - enabled = false, - }, - - { - "danielfalk/smart-open.nvim", - branch = "0.2.x", - dependencies = { - "kkharji/sqlite.lua", - { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, - { "nvim-telescope/telescope-fzy-native.nvim" }, - }, - config = function() - local util = require("lazyvim.util") - util.on_load("telescope.nvim", function() - local telescope = require("telescope") - telescope.load_extension("smart_open") - end) - end, - }, - - { - "telescope.nvim", - keys = { - { - "", - function() - require("telescope").extensions.smart_open.smart_open({ - filename_first = false, - }) - end, - desc = "Telescope smart open", - }, - }, - opts = function(_, opts) - local actions = require("telescope.actions") - opts.defaults = { - layout_strategy = "horizontal", - layout_config = { - anchor = "top", - horizontal = { - prompt_position = "top", - mirror = false, - preview_width = 0.49, - -- preview_height = 0.5, - }, - width = 0.9, - height = 0.9, - preview_cutoff = 10, - }, - mappings = { - i = { - [""] = actions.close, -- close popup - [""] = false, -- clear prompt - [""] = false, -- clear prompt - }, - }, - -- path_display = { "filename_first" }, - -- previewer = false, - preview = { - -- hide_on_startup = true, - }, - sorting_strategy = "ascending", - winblend = 0, - wrap_results = true, - } - end, - }, -} diff --git a/.config/nvim/lua/plugins/overseer.lua b/.config/nvim/lua/plugins/overseer.lua deleted file mode 100644 index fb545a8..0000000 --- a/.config/nvim/lua/plugins/overseer.lua +++ /dev/null @@ -1,90 +0,0 @@ -return { - { - "folke/which-key.nvim", - opts = function(_, opts) - if LazyVim.has("noice.nvim") then - opts.defaults["o"] = { name = "+overseer" } - end - end, - }, - - { - "folke/edgy.nvim", - optional = true, - opts = function(_, opts) - opts.right = opts.right or {} - table.insert(opts.right, { - title = "Overseer", - ft = "OverseerList", - open = function() - require("overseer").open() - end, - }) - end, - }, - - { - "nvim-neotest/neotest", - dependencies = "stevearc/overseer.nvim", - opts = function(_, opts) - local consumers = opts.consumers or {} - consumers.overseer = require("neotest.consumers.overseer") - end, - }, - - { - "stevearc/overseer.nvim", - cmd = { - "OverseerOpen", - "OverseerClose", - "OverseerToggle", - "OverseerSaveBundle", - "OverseerLoadBundle", - "OverseerDeleteBundle", - "OverseerRunCmd", - "OverseerRun", - "OverseerInfo", - "OverseerBuild", - "OverseerQuickAction", - "OverseerTaskAction", - "OverseerClearCache", - }, - dependencies = "nvim-telescope/telescope.nvim", - opts = { - dap = false, - task_list = { - bindings = { - [""] = false, - [""] = false, - [""] = false, - [""] = false, - }, - }, - form = { - win_opts = { - winblend = 0, - }, - }, - confirm = { - win_opts = { - winblend = 0, - }, - }, - task_win = { - win_opts = { - winblend = 0, - }, - }, - }, - -- stylua: ignore - keys = { - { "ow", "OverseerToggle", desc = "Task list" }, - { "oo", "OverseerRun", desc = "Run task" }, - { "oq", "OverseerQuickAction", desc = "Action recent task" }, - { "oi", "OverseerInfo", desc = "Overseer Info" }, - { "ob", "OverseerBuild", desc = "Task builder" }, - { "ot", "OverseerTaskAction", desc = "Task action" }, - { "oc", "OverseerClearCache", desc = "Clear cache" }, - }, - }, -} diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add deleted file mode 100644 index ab924f2..0000000 --- a/.config/nvim/spell/en.utf-8.add +++ /dev/null @@ -1,10 +0,0 @@ -#rytographically -crytographically/! -OIDC -Kubernetes -auth -JWT -PKCE -OPA -#askfile -Taskfile/! diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl deleted file mode 100644 index b8cee884173101bb32cd424d8b1775876e9c6e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmXAi!3qK~3`FyS;8pw-*`M&>)qAaVty|n;E3#j&qb6jSNhZm0e`qz8vU{6ZUWa&_ z=GuAExnew6#AZgZKvgdj#foylH@r0VmHa1?Ja=JNHQYT{&R{mg9|k7ves$7?CUw!Z KBDZh#{2w1Nz8e$( diff --git a/.config/paru/paru.conf b/.config/paru/paru.conf deleted file mode 100644 index 23800b5..0000000 --- a/.config/paru/paru.conf +++ /dev/null @@ -1,8 +0,0 @@ -Include = /etc/paru.conf - -[options] -RemoveMake = ask -SkipReview - -[bin] -Sudo = doas diff --git a/.config/rg/rg.conf b/.config/rg/rg.conf deleted file mode 100644 index a09bccf..0000000 --- a/.config/rg/rg.conf +++ /dev/null @@ -1,10 +0,0 @@ ---glob=!/.git/ ---glob=!/.terraform/ ---pretty ---colors=column:fg:100,181,246 ---colors=line:fg:100,181,246 ---colors=path:fg:26,35,126 ---colors=path:style:bold ---colors=match:style:nobold ---colors=match:bg:255,235,59 ---colors=match:fg:0,0,0 diff --git a/.config/sapling/sapling.conf b/.config/sapling/sapling.conf deleted file mode 100644 index f6bbe26..0000000 --- a/.config/sapling/sapling.conf +++ /dev/null @@ -1,22 +0,0 @@ -[ui] -username =Daniel Lundin - -[alias] -sw = switch -switch = !sl sl -M -T ':\033[31m{node|short} \033[1;33m{bookmarks}{if(bookmarks, " ")}{remotenames} {if(github_pull_request_number, "\033[1;37;41m PR #{github_pull_request_number} ")}\033[0;3;32m {date|age} \033[35;1;3mby {author|user} - \033[0;34;3m{desc|firstline}\033[0m' | sed -E -e '/31m[0-9abcdef]{12}/!d' -e 's/.+ ://' | fzf-tmux -p 90%,50% -y 0 --ansi --color=light | sed "s/ .*//" | xargs -r -n1 sl go && sl log -r . -T status - -l = ll -ll = log -G -T '\033[31m{node|short} \033[3;32m{date|age} \033[35;1;3mby {author|person}\n \033[0;34;3m{desc|firstline}\033[0m\n\n' - -[pager] -pager = delta --hunk-header-style "line-number file" --line-numbers --max-line-distance 0.9 --inspect-raw-lines=false - -[color] -sl.public = color70 bold -sl.draft = color208 bold -sl.current = color99 bold -sl.diff = red bold - -[committemplate] -emptymsg = "" - diff --git a/.config/starship.toml b/.config/starship.toml deleted file mode 100644 index f983e5f..0000000 --- a/.config/starship.toml +++ /dev/null @@ -1,77 +0,0 @@ -"$schema" = 'https://starship.rs/config-schema.json' - -add_newline = true - -format = """\ -$fill\ -${custom.pwd}\ -$line_break\ -$hostname\ -$directory\ -($character)\ -""" - -right_format = """\ -$cmd_duration\ -$git_branch$git_commit$git_status$git_state\ -""" - -[hostname] -ssh_only = false -format = "[$hostname](italic bold)" -disabled = false - -[time] -disabled = false -format = '[ $time](italic dimmed inverted)' -time_format = '%R' - -[custom.pwd] -command = "prompt_pwd -D 100" -when = true -format = "[ $output]($style)" -style = "italic dimmed" - -[directory] -fish_style_pwd_dir_length = 1 -truncation_length = 1 -truncate_to_repo = false -truncation_symbol = "…" -style = "italic" - -[line_break] -disabled = false - -[fill] -symbol = '┄' -style = 'dimmed fg:#888888' - -[character] -success_symbol = "[%](bold)" -error_symbol = "[✖](bold red)" - -[cmd_duration] -min_time = 500 -format = '[󱦟 $duration ](yellow)' - -[git_branch] -format = "[$symbol$branch]($style)" -style = "italic bold green" -symbol = " " -truncation_length = 16 -truncation_symbol = "" - -[git_commit] -format = "[ $hash$tag]($style) " -style = "cyan" - -[git_state] -style = "" - -[git_status] -format = '([$all_status$ahead_behind]($style))' -style = "fg:#00ac73" -modified = "[ 󰦒](yellow)" -deleted = "[ ✘](red)" -untracked = "[ ?](purple)" -staged = "[ 󰐖](cyan)" diff --git a/.config/systemd/user/opener@.service b/.config/systemd/user/opener@.service deleted file mode 100644 index fcd14c9..0000000 --- a/.config/systemd/user/opener@.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Open URL in your local web browser from the SSH-connected remote environment. -After=graphical-session.target - -[Service] -Restart=always -Environment=OPENER_CONF=%t/opener.%i.conf -ExecStart=/bin/sh -c 'echo "address: %t/opener.%i.sock" > $OPENER_CONF && exec %h/bin/opener --config $OPENER_CONF' - -[Install] -WantedBy=graphical-session.target diff --git a/.config/systemd/user/tmux.service b/.config/systemd/user/tmux.service deleted file mode 100644 index fc4806c..0000000 --- a/.config/systemd/user/tmux.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Run tmux server - -[Service] -Restart=always -StartLimitIntervalSec=0 -ExecStart=/usr/bin/tmux -D -u - -[Install] -WantedBy=default.target diff --git a/.config/vconsole/personal.map b/.config/vconsole/personal.map deleted file mode 100644 index 1740bb1..0000000 --- a/.config/vconsole/personal.map +++ /dev/null @@ -1,3 +0,0 @@ -include "linux-with-two-alt-keys" -keycode 58 = Control - diff --git a/.config/zsh-abbr/user-abbreviations b/.config/zsh-abbr/user-abbreviations deleted file mode 100644 index b0d3a00..0000000 --- a/.config/zsh-abbr/user-abbreviations +++ /dev/null @@ -1,13 +0,0 @@ -abbr "b"="git branch -va" -abbr "c"="git commit" -abbr "d"="git diff --stat -p -C --color-words" -abbr "g"="git" -abbr "gsw"="git gerrit-switch" -abbr "k"="kubectl" -abbr "new"="git checkout --detach main" -abbr "p"="git push" -abbr "rec"="git record" -abbr "s"="git st" -abbr "sl"="git branchless smartlog" -abbr "sw"="git branchless switch --interactive" -abbr "sy"="git sync --pull" diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..0f94eed --- /dev/null +++ b/.envrc @@ -0,0 +1,2 @@ +# shellcheck shell=bash +use flake diff --git a/.gitconfig b/.gitconfig deleted file mode 100644 index e001475..0000000 --- a/.gitconfig +++ /dev/null @@ -1,150 +0,0 @@ -[alias] -b = branch -va -cl = clone --filter=blob:none -co = checkout -d = diff --stat -p -C --color-words -ds = diff --staged --stat -p -C --color-words -dt = difftool -patch = !git --no-pager diff --no-color -pullr = pull --rebase --autostash -sh = show --stat -p -C --color-words --show-signature -st = status -sb -t = tag --sort=-v:refname --format='%(color:bold italic)%(objectname:short)%(color:noitalic) %(refname:short)' - -new = !git fetch -u origin main:main && git branchless switch -d origin/main -sl = branchless smartlog -sync = branchless sync -sw = branchless switch -s = branchless switch -i - -copr = "!f() { \ - pr=$1 \ - && test -n \"$pr\" || pr=`tea pr list -o simple | fzf --bind 'enter:become(echo {+1})'` \ - && git fetch origin refs/pull/$pr/head \ - && git checkout --detach FETCH_HEAD \ - ;};f" - -g = graph -S -m simple -s round -ll = "log --pretty='format:%x1B[0;3;36m%as %G? %x1B[0;95;3m%<(12,trunc)%al %x1B[3;32m• %h%x1B[0;1;92m%(decorate:prefix= [,suffix=]%n)%>|(35)%Creset %s'" -lla = "log --graph --all --topo-order --pretty='format:\t%x1B[0;3;36m%as %x1B[0;95;3m%<(12)%al %x1B[3;32m• %h%x1B[0;1;92m%d%x1B[0m %s'" - -guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f" -serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/ - -[apply] -whitespace = nowarn - -[blame] -date = relative - -[branch "main"] -rebase = true - -[branch "master"] -rebase = true - -[color] -branch = auto -diff = auto -status = auto -ui = auto - -[column] -ui = auto - -[core] -compression = 3 -excludesfile = "~/.gitignore" -looseCompression = 3 -pager = delta - -[delta] -file-added-label = "[+]" -file-decoration-style=none -file-modified-label = "[*]" -file-removed-label = "[-]" -file-renamed-label = "[>]" -file-style = bold reverse -file-transformation = "s/$/ ░▒▓/" -hunk-header-decoration-style=none -hunk-header-file-style = bold -hunk-header-line-number-style = bold -hunk-header-style = line-number bold -hunk-label = "⯁" -hunk-label-style = bold -line-numbers = true -max-line-distance = 0.9 - -[http] -cookiefile = /home/dln/.gitcookies - -[hub] -protocol = git - -[interactive] -diffFilter = delta --color-only --features=interactive - -[commit] -gpgsign = false -verbose = true - -[credential] -helper = store - -[diff] -algorithm = histogram -tool = difft - -[difftool] -prompt = false - -[difftool "difft"] -cmd = difft --color=always --display inline "$LOCAL" "$REMOTE" | bat - -[fetch] -prune = true -prunetags = true -showForcedUpdates = true - -[filter "lfs"] -clean = git-lfs clean -- %f -process = git-lfs filter-process -required = true -smudge = git-lfs smudge -- %f - -[gpg] -format = ssh - -[gpg "ssh"] -allowedSignersFile = ~/.config/git/allowed_signers -defaultKeyCommand = /home/dln/.config/git/signing-key.sh - -[init] -defaultBranch = main - -[lfs] -concurrenttransfers = 32 - -[merge] -conflictstyle = zdiff3 - -[pack] -compression = 3 -threads = 0 - -[push] -default = tracking - -[rebase] -autosquash = true - -[rerere] -enabled = true - -[tag] -sort = -v:refname - -[user] -email = dln@arity.se -name = Daniel Lundin -useConfigOnly = true diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4bb6205..0000000 --- a/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -*~ -*.a -*.class -/.idea -*.iml -*.ipr -*.iwr -*.iws -*.la -*.o -*.pyc -*.so -*.swp - diff --git a/.gnupg/gpg-agent.conf b/.gnupg/gpg-agent.conf deleted file mode 100644 index db49aaf..0000000 --- a/.gnupg/gpg-agent.conf +++ /dev/null @@ -1,4 +0,0 @@ -enable-ssh-support -default-cache-ttl 3600 -max-cache-ttl 3600 -extra-socket /run/user/1000/gnupg/S.gpg-agent.extra diff --git a/.gnupg/gpg.conf b/.gnupg/gpg.conf deleted file mode 100644 index 50f74df..0000000 --- a/.gnupg/gpg.conf +++ /dev/null @@ -1,2 +0,0 @@ -#use-agent -keyid-format LONG diff --git a/.inputrc b/.inputrc deleted file mode 100644 index 062ffe5..0000000 --- a/.inputrc +++ /dev/null @@ -1,11 +0,0 @@ -set meta-flag on -set convert-meta off -set output-meta on -set completion-ignore-case on -set visible-stats on -set show-all-if-ambiguous on -set completion-query-items 150 - -#"\C-p": history-search-backward -#"\C-n": history-search-forward - diff --git a/.jjconfig.toml b/.jjconfig.toml deleted file mode 100644 index befcefa..0000000 --- a/.jjconfig.toml +++ /dev/null @@ -1,21 +0,0 @@ -[user] -name = "Daniel Lundin" -email = "dln@arity.se" - -[ui] -default-command = "l" -diff-editor = ["scm-diff-editor", "--dir-diff", "$left", "$right"] -pager = ["delta", "--line-numbers", "--max-line-distance=0.9"] - -[aliases] -l = ["log", "--ignore-working-copy", "-r", "(main..@): | (main..@)-"] -la = ["log", "--ignore-working-copy", "-r", "all()"] -b = ["branch", "list"] -n = ["new", "main"] -d = ["diff"] - -[revset-aliases] -# The `main.. &` bit is an optimization to scan for non-`mine()` commits only -# among commits that are not in `main`. -"immutable_heads()" = "main@origin | (main@origin.. & ~mine())" - diff --git a/.lessfilter b/.lessfilter deleted file mode 100755 index 43d2942..0000000 --- a/.lessfilter +++ /dev/null @@ -1,46 +0,0 @@ -#! /usr/bin/env bash -mime=$(file -Lbs --mime-type "$1") -category=${mime%%/*} -kind=${mime##*/} -ext=${1##*.} -if [ "$kind" = json ]; then - if [ "$(command -v jq)" ]; then - jq -Cr . "$1" - fi -elif [ "$kind" = vnd.sqlite3 ]; then - if [ "$(command -v yes)" ] && [ "$(command -v sqlite3)" ] && [ "$(command -v bat)" ]; then - yes .q | sqlite3 "$1" | bat --color=always -plsql - fi -# https://github.com/wofr06/lesspipe/pull/107 -elif [ -d "$1" ]; then - if [ "$(command -v exa)" ]; then - exa --git -hl --color=always --icons "$1" - fi -# https://github.com/wofr06/lesspipe/pull/110 -elif [ "$kind" = pdf ]; then - if [ "$(command -v pdftotext)" ] && [ "$(command -v sed)" ]; then - pdftotext -q "$1" - | sed "s/\f/$(hr ─)\n/g" - fi -# https://github.com/wofr06/lesspipe/pull/115 -elif [ "$kind" = rfc822 ]; then - if [ "$(command -v bat)" ]; then - bat --color=always -lEmail "$1" - fi -# https://github.com/wofr06/lesspipe/pull/106 -elif [ "$category" = image ]; then - if [ "$(command -v chafa)" ]; then - chafa -f symbols "$1" - fi - if [ "$(command -v exiftool)" ]; then - exiftool "$1" | bat --color=always -plyaml - fi -# https://github.com/wofr06/lesspipe/pull/117 -elif [ "$category" = text ]; then - if [ "$(command -v bat)" ]; then - bat --color=always "$1" - elif [ "$(command -v pygmentize)" ]; then - pygmentize "$1" | less - fi -else - exit 1 -fi diff --git a/.local/share/applications/firefox-arity.desktop b/.local/share/applications/firefox-arity.desktop deleted file mode 100644 index c417974..0000000 --- a/.local/share/applications/firefox-arity.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Firefox (Arity) -GenericName=Web Browser -Comment=Browse the Web -Exec=firefox %u -P Arity --name firefox-arity -Icon=firefox -Terminal=false -Type=Application -MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; -StartupWMClass=firefox-arity -Categories=Network;WebBrowser; -Keywords=web;browser;internet; diff --git a/.local/share/applications/firefox-work.desktop b/.local/share/applications/firefox-work.desktop deleted file mode 100644 index 805a7a9..0000000 --- a/.local/share/applications/firefox-work.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Firefox (Work) -GenericName=Web Browser -Comment=Browse the Web -Exec=firefox %u -P Work --new-instance --name firefox-work -Icon=firefox -Terminal=false -Type=Application -MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; -StartupWMClass=firefox-work -Categories=Network;WebBrowser; -Keywords=web;browser;internet; diff --git a/.local/share/applications/google-chrome-beta-client.desktop b/.local/share/applications/google-chrome-beta-client.desktop deleted file mode 100644 index cd2f598..0000000 --- a/.local/share/applications/google-chrome-beta-client.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Client Chrome -StartupWMClass=Google-chrome-beta-client -Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-client --class=Google-chrome-beta-client -StartupNotify=true -Terminal=false -Icon=google-chrome-beta -Type=Application -Categories=Network;WebBrowser; -MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; diff --git a/.local/share/applications/google-chrome-beta-private.desktop b/.local/share/applications/google-chrome-beta-private.desktop deleted file mode 100644 index 581a1ba..0000000 --- a/.local/share/applications/google-chrome-beta-private.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Private Chrome -StartupWMClass=Google-chrome-beta-private -Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-private --class=Google-chrome-beta-private -StartupNotify=true -Terminal=false -Icon=google-chrome-beta -Type=Application -Categories=Netprivate;WebBrowser; -MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; diff --git a/.local/share/applications/google-chrome-beta-work.desktop b/.local/share/applications/google-chrome-beta-work.desktop deleted file mode 100644 index 9912349..0000000 --- a/.local/share/applications/google-chrome-beta-work.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Work Chrome -StartupWMClass=Google-chrome-beta-work -Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-work --class=Google-chrome-beta-work -StartupNotify=true -Terminal=false -Icon=google-chrome-beta -Type=Application -Categories=Network;WebBrowser; -MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; diff --git a/.local/share/applications/meet.desktop b/.local/share/applications/meet.desktop deleted file mode 100644 index 4dca9eb..0000000 --- a/.local/share/applications/meet.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Google Meet -StartupWMClass=meet.google.com -Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 1' --app=https://meet.google.com -Terminal=false -Icon=camera-video -Type=Application -Categories=Network;Office diff --git a/.local/share/applications/plex.desktop b/.local/share/applications/plex.desktop deleted file mode 100644 index 49d5d49..0000000 --- a/.local/share/applications/plex.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=plex -StartupWMClass=plex.aarn.shelman.io -Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 2' --app=https://plex.home:32400/web/index.html -Terminal=false -Icon=google-chrome -Type=Application -Categories=Audio; diff --git a/.local/share/applications/spotify.desktop b/.local/share/applications/spotify.desktop deleted file mode 100644 index 4359bc1..0000000 --- a/.local/share/applications/spotify.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Spotify -GenericName=Music Player -Icon=spotify-client -TryExec=spotify -Exec=spotify --force-device-scale-factor=2 %U -Terminal=false -MimeType=x-scheme-handler/spotify; -Categories=Audio;Music;Player;AudioVideo; -StartupWMClass=spotify diff --git a/.local/share/applications/wezterm-dev-secondary.desktop b/.local/share/applications/wezterm-dev-secondary.desktop deleted file mode 100644 index 9c1905b..0000000 --- a/.local/share/applications/wezterm-dev-secondary.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=wezterm-dev-secondary -GenericName=wezterm-dev-secondary -StartupWMClass=org.wezfurlong.wezterm-dev-secondary -Type=Application -TryExec=/usr/bin/wezterm -Icon=org.wezfurlong.wezterm -Terminal=false -Categories=System;TerminalEmulator; -Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev-secondary --domain=dev diff --git a/.local/share/applications/wezterm-dev.desktop b/.local/share/applications/wezterm-dev.desktop deleted file mode 100644 index 9cff6ce..0000000 --- a/.local/share/applications/wezterm-dev.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=wezterm-dev -GenericName=wezterm-dev -StartupWMClass=org.wezfurlong.wezterm-dev -Type=Application -TryExec=/usr/bin/wezterm -Icon=org.wezfurlong.wezterm -Terminal=false -Categories=System;TerminalEmulator; -Exec=/usr/bin/wezterm --config 'default_prog={"/usr/bin/fish"}' start --class=org.wezfurlong.wezterm-dev --domain=dev diff --git a/.local/share/applications/wezterm-local.desktop b/.local/share/applications/wezterm-local.desktop deleted file mode 100644 index 773565d..0000000 --- a/.local/share/applications/wezterm-local.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=wezterm-local -GenericName=wezterm-local -StartupWMClass=wezterm-local -Type=Application -TryExec=/usr/bin/wezterm -Icon=org.wezfurlong.wezterm -Terminal=false -Categories=System;TerminalEmulator; -Exec=/usr/bin/wezterm --config 'default_prog={"tmux", "-u", "new", "-As0"}' start --class=wezterm-local diff --git a/.local/share/applications/wezterm-nemo.desktop b/.local/share/applications/wezterm-nemo.desktop deleted file mode 100644 index 392778e..0000000 --- a/.local/share/applications/wezterm-nemo.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=wezterm-nemo -GenericName=wezterm-nemo -StartupWMClass=org.wezfurlong.wezterm-nemo -Type=Application -TryExec=/usr/bin/wezterm -Icon=org.wezfurlong.wezterm -Terminal=false -Categories=System;TerminalEmulator; -Exec=/usr/bin/wezterm --config 'default_prog={"fish"}' start --class=org.wezfurlong.wezterm-nemo --domain=nemo diff --git a/.local/share/applications/youtube-music.desktop b/.local/share/applications/youtube-music.desktop deleted file mode 100644 index a6d0926..0000000 --- a/.local/share/applications/youtube-music.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=YouTube Music (provar) -StartupWMClass=music.youtube.com -Exec=/usr/bin/google-chrome-stable --user-data-dir=$HOME/.config/google-chrome --profile-directory='Profile 2' --app=https://music.youtube.com --class=music.youtube.com -Terminal=false -Icon=google-chrome -Type=Application -Categories=Audio; diff --git a/.ssh/config b/.ssh/config deleted file mode 100644 index 50a9bcc..0000000 --- a/.ssh/config +++ /dev/null @@ -1,35 +0,0 @@ -ServerAliveInterval 15 -ServerAliveCountMax 3 -ControlMaster auto -ControlPath ${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r -ControlPersist 1200 -Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr - -AddressFamily inet -PreferredAuthentications=publickey - -Include ~/.ssh/private_config - -Host 10.1.100.16 -Host dln-dev -Host dev -Hostname 10.1.100.16 - #Hostname aarn.shelman.io - #Port 2022 -ForwardAgent yes -ExitOnForwardFailure yes -Compression no -#RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.dln-dev.sock - -Host nemo -Hostname 10.1.100.20 -ForwardAgent yes -ExitOnForwardFailure yes -Compression no -RemoteForward ${XDG_RUNTIME_DIR}/opener.sock ${XDG_RUNTIME_DIR}/opener.nemo.sock -#LocalForward localhost:3000 localhost:3000 -LocalForward localhost:8000 localhost:8000 -LocalForward localhost:8080 localhost:8080 - -Host * -ForwardAgent no diff --git a/.ssh/rc b/.ssh/rc deleted file mode 100755 index eb38e90..0000000 --- a/.ssh/rc +++ /dev/null @@ -1,4 +0,0 @@ -if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then - mkdir -p "${XDG_RUNTIME_DIR}/gcr"; - ln -sf "$SSH_AUTH_SOCK" "${XDG_RUNTIME_DIR}/gcr/ssh"; -fi diff --git a/.tmux.conf b/.tmux.conf deleted file mode 100644 index 3ef1c7d..0000000 --- a/.tmux.conf +++ /dev/null @@ -1,96 +0,0 @@ -set -g prefix ^o - -set -g base-index 1 -set -g display-panes-time 3000 -set -s escape-time 10 -set -g status on -set -g status-interval 30 -set -g focus-events on -set -g allow-passthrough on -setw -g alternate-screen on -setw -g aggressive-resize on -setw -g automatic-rename off -setw -g mode-keys vi -set-option -g mouse on - -# clipboard -set -g set-clipboard on -bind-key ] paste-buffer -p - -set-environment -g "SSH_AUTH_SOCK" "$XDG_RUNTIME_DIR/gcr/ssh" -set -g update-environment "BUILD_COMMAND GOPACKAGESDRIVER SSH_AUTH_SOCK SSH_CONNECTION" -#set -g default-command "$SHELL" -set -g history-limit 10000 -# -set -g default-terminal "wezterm" -set -ga terminal-features '*:clipboard:ccolor:hyperlinks:osc7:overline:sixel:strikethrough:title:usstyle:RGB' -set -ga terminal-overrides ',wezterm:cnorm=\E[?12h\E[?25h' - -# Key bindings -bind -n M-Tab if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window' -bind -n M-h select-pane -L -bind -n M-l select-pane -R -bind -n M-Left select-pane -L -bind -n M-Right select-pane -R -# bind -n M-j select-pane -U -# bind -n M-k select-pane -D -bind -T copy-mode-vi M-k send-keys -X cursor-up \; send-keys -X previous-prompt -o \; send-keys -X cursor-up -bind -T copy-mode-vi M-j send-keys -X cursor-down \; send-keys -X next-prompt -o \; send-keys -X cursor-up -bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up -bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up -bind -n M-Up select-pane -U -bind -n M-Down select-pane -D -bind -n M-1 select-window -t 42 -bind -n M-2 select-window -t 2 -bind -n M-3 select-window -t 3 -bind -n M-4 select-window -t 4 -bind -n M-5 select-window -t 5 -bind -n M-6 select-window -t 6 -bind -n M-7 select-window -t 7 -bind -n M-8 select-window -t 8 -bind -n M-9 select-window -t 9 -bind -n M-0 select-window -t 10 - -bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m -bind C-o send-keys C-o -bind r source-file ~/.tmux.conf -bind -n C-Right next-window -bind -n C-Left previous-window -bind C-s set-option -g status -bind K confirm kill-server -bind C-k clear-history -bind -n C-l send-keys C-l \; clear-history -bind-key -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up -bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down -bind-key / copy-mode \; send-key ? -bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer -bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again - -setw -g window-status-format "" -setw -g window-status-current-format "" -setw -g window-status-separator "" -set -g status-style "bg=#444444,fg=#dddddd,italics" -set -g popup-border-style "fg=#77fecc" -set -g pane-border-style "fg=#334455" -set -g pane-active-border-style "fg=#334455" -set -g status-position bottom -set -g status-left-length 0 -set -g status-right-length 0 -set -g status-left '[#I] #{pane_current_path}' -set -g status-right '%F | %R' -set -g status off -set -g set-titles on -set -g set-titles-string "#H - #T" - -new -s0 -n 1 -new-window -n 2 -new-window -n 3 -new-window -n 4 -new-window -n 5 -new-window -n 6 -new-window -n 7 -new-window -n 8 -new-window -n 9 -new-window -n 0 - -# vim:set ft=tmux: diff --git a/.vault b/.vault deleted file mode 100644 index 6f129db..0000000 --- a/.vault +++ /dev/null @@ -1,2 +0,0 @@ -#token_helper = "/home/dln/bin/vault-token-helper" - diff --git a/README.md b/README.md new file mode 100644 index 0000000..a989f47 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Home Manager + +IT in a box! diff --git a/bin/git-st b/bin/git-st deleted file mode 100755 index 764d628..0000000 --- a/bin/git-st +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -if git branchless query HEAD >/dev/null 2>&1; then - printf '\n ● \e[1m' - git branchless query HEAD - printf '\e[2;38;5;242m%*s\e[0m\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' '-' -fi - -awk -vOFS='' ' - NR==FNR { - all[i++] = $0; - difffiles[$1] = $0; - next; - } - ! ($2 in difffiles) { - print; next; - } - { - gsub($2, difffiles[$2]); - print; - } - END { - if (NR != FNR) { - # Had diff output - exit; - } - # Had no diff output, just print lines from git status -sb - for (i in all) { - print all[i]; - } - } -' \ - <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') \ - <(git -c color.status=always status -sb) - -printf '\n' diff --git a/bin/git-wtf b/bin/git-wtf deleted file mode 100755 index e407eae..0000000 --- a/bin/git-wtf +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/env ruby - -HELP = < -.git-wtfrc" and edit it. The config file is a YAML file that specifies the -integration branches, any branches to ignore, and the max number of commits to -display when --all-commits isn't used. git-wtf will look for a .git-wtfrc file -starting in the current directory, and recursively up to the root. - -IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed -with heads/, e.g. "heads/master". Remote branches must be of the form -remotes//. -EOS - -COPYRIGHT = <. -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -more details. - -You can find the GNU General Public License at: http://www.gnu.org/licenses/ -EOS - -require 'yaml' -CONFIG_FN = ".git-wtfrc" - -class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end - -if ARGV.delete("--help") || ARGV.delete("-h") - puts USAGE - exit -end - -## poor man's trollop -$long = ARGV.delete("--long") || ARGV.delete("-l") -$short = ARGV.delete("--short") || ARGV.delete("-s") -$all = ARGV.delete("--all") || ARGV.delete("-a") -$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A") -$dump_config = ARGV.delete("--dump-config") -$key = ARGV.delete("--key") || ARGV.delete("-k") -$show_relations = ARGV.delete("--relations") || ARGV.delete("-r") -ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ } - -## search up the path for a file -def find_file fn - while true - return fn if File.exist? fn - fn2 = File.join("..", fn) - return nil if File.expand_path(fn2) == File.expand_path(fn) - fn = fn2 - end -end - -want_color = `git config color.wtf` -want_color = `git config color.ui` if want_color.empty? -$color = case want_color.chomp - when "true"; true - when "auto"; $stdout.tty? -end - -def red s; $color ? "\033[31m#{s}\033[0m" : s end -def green s; $color ? "\033[32m#{s}\033[0m" : s end -def yellow s; $color ? "\033[33m#{s}\033[0m" : s end -def cyan s; $color ? "\033[36m#{s}\033[0m" : s end -def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end -def purple s; $color ? "\033[35m#{s}\033[0m" : s end - -## the set of commits in 'to' that aren't in 'from'. -## if empty, 'to' has been merged into 'from'. -def commits_between from, to - if $long - `git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}` - else - `git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}` - end.split(/[\r\n]+/) -end - -def show_commits commits, prefix=" " - if commits.empty? - puts "#{prefix} none" - else - max = $all_commits ? commits.size : $config["max_commits"] - max -= 1 if max == commits.size - 1 # never show "and 1 more" - commits[0 ... max].each { |c| puts "#{prefix}#{c}" } - puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max - end -end - -def ahead_behind_string ahead, behind - [ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead", - behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"]. - compact.join("; ") -end - -def widget merged_in, remote_only=false, local_only=false, local_only_merge=false - left, right = case - when remote_only; %w({ }) - when local_only; %w{( )} - else %w([ ]) - end - middle = case - when merged_in && local_only_merge; green("~") - when merged_in; green("x") - else " " - end - print left, middle, right -end - -def show b - have_both = b[:local_branch] && b[:remote_branch] - - pushc, pullc, oosync = if have_both - [x = commits_between(b[:remote_branch], b[:local_branch]), - y = commits_between(b[:local_branch], b[:remote_branch]), - !x.empty? && !y.empty?] - end - - if b[:local_branch] - puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, "")) - - if have_both - if pushc.empty? - puts "#{widget true} in sync with remote" - else - action = oosync ? "push after rebase / merge" : "push" - puts "#{widget false} NOT in sync with remote (you should #{action})" - show_commits pushc unless $short - end - end - end - - if b[:remote_branch] - puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})" - - if have_both - if pullc.empty? - puts "#{widget true} in sync with local" - else - action = pushc.empty? ? "merge" : "rebase / merge" - puts "#{widget false} NOT in sync with local (you should #{action})" - show_commits pullc unless $short - end - end - end - - puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync -end - -def show_relations b, all_branches - ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) || $config["integration-branches"].include?(br[:remote_branch]) } - if $config["integration-branches"].include? b[:local_branch] - puts "\nFeature branches:" unless fbs.empty? - fbs.each do |name, br| - next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch]) - next if br[:ignore] - local_only = br[:remote_branch].nil? - remote_only = br[:local_branch].nil? - name = if local_only - purple br[:name] - elsif remote_only - cyan br[:name] - else - green br[:name] - end - - ## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll - ## use the local branch head. - head = remote_only ? br[:remote_branch] : br[:local_branch] - - remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : [] - local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : [] - - if local_ahead.empty? && remote_ahead.empty? - puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in" - elsif local_ahead.empty? - puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)" - else - behind = commits_between head, (br[:local_branch] || br[:remote_branch]) - ahead = remote_only ? remote_ahead : local_ahead - puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})" - show_commits ahead unless $short - end - end - else - puts "\nIntegration branches:" unless ibs.empty? # unlikely - ibs.sort_by { |v, br| v }.each do |v, br| - next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch]) - next if br[:ignore] - local_only = br[:remote_branch].nil? - remote_only = br[:local_branch].nil? - name = remote_only ? cyan(br[:name]) : green(br[:name]) - - ahead = commits_between v, (b[:local_branch] || b[:remote_branch]) - if ahead.empty? - puts "#{widget true, local_only} merged into #{name}" - else - #behind = commits_between b[:local_branch], v - puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)" - show_commits ahead unless $short - end - end - end -end - -#### EXECUTION STARTS HERE #### - -## find config file and load it -$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin - fn = find_file CONFIG_FN - if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false - h["integration-branches"] ||= h["versions"] # support old nomenclature - h - else - {} - end -end - -if $dump_config - puts $config.to_yaml - exit -end - -## first, index registered remotes -remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l| - l =~ /^remote\.(.+?)\.url (.+)$/ or next hash - hash[$1] ||= $2 - hash -end - -## next, index followed branches -branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l| - case l - when /branch\.(.*?)\.remote (.+)/ - name, remote = $1, $2 - - hash[name] ||= {} - hash[name].merge! :remote => remote, :remote_url => remotes[remote] - when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/ - name, remote_branch = $1, $4 - hash[name] ||= {} - hash[name].merge! :remote_mergepoint => remote_branch - end - hash -end - -## finally, index all branches -remote_branches = {} -`git show-ref`.split(/[\r\n]+/).each do |l| - sha1, ref = l.chomp.split " refs/" - - if ref =~ /^heads\/(.+)$/ # local branch - name = $1 - next if name == "HEAD" - branches[name] ||= {} - branches[name].merge! :name => name, :local_branch => ref - elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch - remote, name = $1, $2 - remote_branches["#{remote}/#{name}"] = true - next if name == "HEAD" - ignore = !($all || remote == "origin") - - branch = name - if branches[name] && branches[name][:remote] == remote - # nothing - else - name = "#{remote}/#{branch}" - end - - branches[name] ||= {} - branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore - end -end - -## assemble remotes -branches.each do |k, b| - next unless b[:remote] && b[:remote_mergepoint] - b[:remote_branch] = if b[:remote] == "." - b[:remote_mergepoint] - else - t = "#{b[:remote]}/#{b[:remote_mergepoint]}" - remote_branches[t] && t # only if it's still alive - end -end - -show_dirty = ARGV.empty? -targets = if ARGV.empty? - [`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")] -else - ARGV.map { |x| x.sub(/^heads\//, "") } -end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." } - -targets.each do |t| - show t - show_relations t, branches if $show_relations || t[:remote_branch].nil? -end - -modified = show_dirty && `git ls-files -m` != "" -uncommitted = show_dirty && `git diff-index --cached HEAD` != "" - -if $key - puts - puts KEY -end - -puts if modified || uncommitted -puts "#{red "NOTE"}: working directory contains modified files." if modified -puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted - -# the end! diff --git a/bin/ktoolbox b/bin/ktoolbox deleted file mode 120000 index fcc985d..0000000 --- a/bin/ktoolbox +++ /dev/null @@ -1 +0,0 @@ -/home/dln/src/github.com/dln/ktoolbox/ktoolbox \ No newline at end of file diff --git a/bin/pst b/bin/pst deleted file mode 100755 index 3239f28..0000000 --- a/bin/pst +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -set -eo pipefail - -URL="https://paste.aarn.shelman.io" - -FILEPATH="$1" -FILENAME=$(basename -- "$FILEPATH") -EXTENSION="${FILENAME##*.}" - -RESPONSE=$(curl -s --data-binary "@${FILEPATH:-/dev/stdin}" --url $URL) -PASTELINK="$URL$RESPONSE" - -[ -z "$EXTENSION" ] && - echo "$PASTELINK" || - echo "$PASTELINK.$EXTENSION" diff --git a/bin/starship-sl-status b/bin/starship-sl-status deleted file mode 100755 index 8a80026..0000000 --- a/bin/starship-sl-status +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash -set -xfeuo pipefail - -state="${XDG_RUNTIME_DIR}/starship-sl-status" -checkout="${state}.checkout" -status="${state}.data" - -if [[ "$PWD" != $(readlink -f "$state")* ]]; then - rm -f "$state" - root="$(sl root 2>/dev/null || true)" - ln -s "$root" "$state" - if [[ -z "${root}" ]]; then - echo >"${status}" - echo >"${checkout}" - exit 0 - fi -fi - -saved_cid=$(cat "${checkout}" 2>/dev/null || true) -root_cid=$(cat "${state}/.sl/checkoutidentifier" || true) -if [[ ${root_cid} != "${saved_cid}" ]]; then - echo "${root_cid}" >"${checkout}" - sl log -r . -T '{if(github_pull_request_number, "#{github_pull_request_number} @ ", if(bookmarks, "{bookmarks} @ "))}{node|short}{if(remotenames, ":{remotenames}")}' >"${status}" -fi - -cat "$status" || true diff --git a/bin/tmux-build-helper b/bin/tmux-build-helper deleted file mode 100755 index e27347c..0000000 --- a/bin/tmux-build-helper +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -set -ef -o pipefail -eval "$(direnv export bash)" -eval "${BUILD_COMMAND:-echo 'BUILD_COMMAND not set'}" | bat --paging=always diff --git a/bin/tmux-edit-helper b/bin/tmux-edit-helper deleted file mode 120000 index cdf7994..0000000 --- a/bin/tmux-edit-helper +++ /dev/null @@ -1 +0,0 @@ -tmux-nvim-helper \ No newline at end of file diff --git a/bin/tmux-edit-history b/bin/tmux-edit-history deleted file mode 100755 index 6631110..0000000 --- a/bin/tmux-edit-history +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail -_file=$(fre --store_name edit-history --sorted | exec fzf --no-sort --preview "bat {}" --preview-window=down,70%,wrap,border-top --color=bg+:16,fg+:49,pointer:49 --layout=reverse "--bind=alt-e:become(tmux-edit-helper)") -[ -n "$_file" ] && exec tmux-edit-helper "$_file" diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper deleted file mode 100755 index 633150e..0000000 --- a/bin/tmux-hx-helper +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -eval "$(direnv export bash 2>/dev/null)" - -PATH="$HOME/bin:$PATH" - -if [ -n "$1" ]; then - _file=$(readlink -f "$@") -else - FZF=${FZF:-"fzf-tmux -p 90%,90% -y 0"} - _root=$(git rev-parse --show-toplevel 2>/dev/null || pwd) - _store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1) - _file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort --preview "bat {}" --preview-window=bottom,70%,border-top --color=bg+:16,fg+:49,pointer:49 --layout=reverse "--bind=alt-e:become(tmux-edit-history)") - _file="${_root}/${_file}" - fre --store_name "$_store" --add "$_file" -fi - -fre --store_name "edit-history" --add "$_file" - -tmux-shortcut 1 env \ - "AR=$AR" \ - "AS=$AS" \ - "BUILD_COMMAND=$BUILD_COMMAND" \ - "CC=$CC" \ - "CXX=$CXX" \ - "GOFLAGS=$GOFLAGS" \ - "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \ - "LC_ALL=$LC_ALL" \ - "LD=$LD" \ - "NM=$NM" \ - "NM=$NM" \ - "OBJCOPY=$OBJCOPY" \ - "OBJDUMP=$OBJDUMP" \ - "PATH=$PATH" \ - "RANLIB=$RANLIB" \ - "READELF=$READELF" \ - "RUST_SRC_PATH=$RUST_SRC_PATH" \ - "SIZE=$SIZE" \ - "STRIP=$STRIP" \ - helix "${_file}" -sleep 0.1 -tmux send-keys Escape && - tmux send-keys ":open ${_file}" Enter ":reload" Enter diff --git a/bin/tmux-nvim-helper b/bin/tmux-nvim-helper deleted file mode 100755 index 68f1e9e..0000000 --- a/bin/tmux-nvim-helper +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash -set -fe -o pipefail - -eval "$(direnv export bash 2>/dev/null)" - -PATH="$HOME/bin:$PATH" - -if [ -n "$1" ]; then - _file=$(readlink -f "$@") -else - FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0 --layout=reverse"} - _root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd) - _store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1) - _file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort) - _file="${_root}/${_file}" - fre --store_name "$_store" --add "$_file" -fi - -fre --store_name "edit-history" --add "$_file" - -_nvim_socket="$XDG_RUNTIME_DIR/nvim-persistent.sock" - -(tmux select-window -t nvim 2>/dev/null && tmux select-pane -t 0) && exec nvim --server "$_nvim_socket" --remote "$_file" - -# nvim is not running/listening on remote socket, so start it. -tmux new-window -S -t 42 -n nvim \ - -e "AR=$AR" \ - -e "AS=$AS" \ - -e "BUILD_COMMAND=$BUILD_COMMAND" \ - -e "CC=$CC" \ - -e "CXX=$CXX" \ - -e "GOFLAGS=$GOFLAGS" \ - -e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \ - -e "LC_ALL=$LC_ALL" \ - -e "LD=$LD" \ - -e "NM=$NM" \ - -e "NM=$NM" \ - -e "OBJCOPY=$OBJCOPY" \ - -e "OBJDUMP=$OBJDUMP" \ - -e "PATH=$PATH" \ - -e "RANLIB=$RANLIB" \ - -e "READELF=$READELF" \ - -e "RUST_SRC_PATH=$RUST_SRC_PATH" \ - -e "SIZE=$SIZE" \ - -e "STRIP=$STRIP" \ - nvim --listen "$_nvim_socket" "$_file" diff --git a/bin/tmux-shortcut b/bin/tmux-shortcut deleted file mode 100755 index 536ab54..0000000 --- a/bin/tmux-shortcut +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -nr="@app-${1}" -shift - -pane="$(tmux show -vg ${nr} || true)" -if [[ -n "${pane}" ]] && tmux has-session -t "${pane}" ; then - if tmux list-panes -F "#{pane_id}" | grep "^${pane}\$" >>/dev/null ; then - # Pane is on this window. Focus it and exit. - exec tmux select-pane -t "${pane}" - fi -else - # App pane does not exist, so create a new window. - pane=$(tmux new-window -d -P -F '#{pane_id}' "$@") - tmux set -g "${nr}" "${pane}" -fi - -# Swap active pane for app -tmux swap-pane -s "${pane}" diff --git a/bin/tpm2-pkcs11-init-ssh.sh b/bin/tpm2-pkcs11-init-ssh.sh deleted file mode 100755 index b66fb8d..0000000 --- a/bin/tpm2-pkcs11-init-ssh.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -e - -store=$1 -if [ -z "$store" ]; then - echo "Usage: $0 [store-name]" - exit 1 -fi - -export TPM2_PKCS11_STORE=$HOME/.local/share/tpm2-pkcs11/${store} - -echo "=> Initializing store ${TPM2_PKCS11_STORE}" -mkdir -p $TPM2_PKCS11_STORE -tpm2_ptool init -tpm2_ptool addtoken --pid=1 --label=ssh --sopin="$(systemd-ask-password SOPIN)" --userpin="$(systemd-ask-password USERPIN)" - -echo -echo "=> Adding SSH key" -tpm2_ptool addkey --label=ssh --algorithm=ecc256 --userpin="$(systemd-ask-password USERPIN)" - -echo -echo "Store path: $TPM2_PKCS11_STORE" -echo "SSH public key:" -ssh-keygen -D /usr/lib/pkcs11/libtpm2_pkcs11.so 2>>/dev/null diff --git a/bin/url-copy b/bin/url-copy deleted file mode 100755 index 281715e..0000000 --- a/bin/url-copy +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -echo "$@" | xclip -selection clipboard diff --git a/bin/vault-token-helper.sh b/bin/vault-token-helper.sh deleted file mode 100755 index bac9855..0000000 --- a/bin/vault-token-helper.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -# Vault Token helper for the Linux key retention service. -# -# Since version 2.6, the Linux kernel has included a efficiently store -# authentication data on a per thread, per process, per user, or per session -# bases. -# -# Linux Key Management Utilities (keyutils) provides `keyctl` to control -# the facility from the shell. -# -# see https://www.kernel.org/doc/Documentation/security/keys/core.rst -# see https://www.kernel.org/doc/Documentation/security/keys.txt -# see https://lwn.net/Articles/210502/ -# see https://www.ibm.com/developerworks/library/l-key-retention/index.html -# -# Vault allows an external programs to be configured as a token helper -# that can get, store, and erase tokens on behalf of the Vault client. -# -# see https://www.vaultproject.io/docs/commands/token-helper.html -# -# To use this script, make it executable and set your ~/.vault file to -# contain: -# -# token_helper = "/path/to/vault-token-helper.sh" - -# Exit on error. -set -o errexit -# Exit on error inside any functions or subshells. -set -o errtrace -# Do not allow use of undefined vars. -set -o nounset -# Catch the error if any piped command fails. -set -o pipefail - -desc=VAULT_TOKEN:${VAULT_ADDR} - -case $1 in -get) - # If the key is not set, keyctl returns "request_key: Required key not available" - # on stderr and exits with a non-zero status. The implied - key_id=$(keyctl request user ${desc} || echo '') - [ -z ${key_id} ] && exit 0 - keyctl pipe ${key_id} -;; -store) - # Vault sends the token on stdin but there is no linebreak, so EOF is reached - # which causes read to return a non-zero status. - read -r token || true - echo -n ${token} | keyctl padd user ${desc} @u -;; -erase) - keyctl purge user ${desc} -;; -esac diff --git a/bin/wezterm-edit-helper b/bin/wezterm-edit-helper deleted file mode 100755 index 7c93727..0000000 --- a/bin/wezterm-edit-helper +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -set -fe -o pipefail - -eval "$(direnv export bash 2>/dev/null)" - -PATH="$HOME/bin:$PATH" - -if [ -n "$1" ]; then - _file=$(readlink -f "$@") -else - FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0 --layout=reverse"} - _root=$(git rev-parse --show-toplevel 2>/dev/null || jj workspace root 2>/dev/null || pwd) - _store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1) - _file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .jj --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort) - _file="${_root}/${_file}" - fre --store_name "$_store" --add "$_file" -fi - -fre --store_name "edit-history" --add "$_file" - -rm -f "$XDG_RUNTIME_DIR/nvim-persistent.sock" -nvim --server "$XDG_RUNTIME_DIR/nvim-persistent.sock" --remote "$_file" &>/dev/null - -# Wezterm: switch tab to nvim -printf "\033]1337;SetUserVar=%s=%s\007" nvim_activate $(date +%s | base64) diff --git a/bin/xdg-open b/bin/xdg-open deleted file mode 100755 index 801d576..0000000 --- a/bin/xdg-open +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env sh -set -e - -# Use local xdg-open if not in an ssh session -[ -n "$SSH_TTY" ] || exec xdg-open "$@" - -if [ -p /dev/stdin ]; then - exec nc -U "$XDG_RUNTIME_DIR/opener.sock" /dev/null + or return 1 + # Wezterm: switch tab to nvim + printf "\033]1337;SetUserVar=nvim_activate=\007" + ''; + }; + + __zoxide_zi_repaint.body = '' + __zoxide_zi + commandline -f repaint + ''; + + fish_jj_prompt.body = '' + # Is jj installed? + if not command -sq jj + return 1 + end + + # Are we in a jj repo? + if not jj root --quiet &>/dev/null + return 1 + end + + # Generate prompt + jj log --ignore-working-copy --no-graph --color always -r @ -T ' + separate( + " ", + change_id.shortest(), + coalesce( + surround( + "\"", + "\"", + if( + description.first_line().substr(0, 24).starts_with(description.first_line()), + description.first_line().substr(0, 24), + description.first_line().substr(0, 23) ++ "…" + ) + ), + "(no description set)" + ), + branches.join(", "), + commit_id.shortest(), + if(conflict, "(conflict)"), + if(empty, "(empty)"), + if(divergent, "(divergent)"), + if(hidden, "(hidden)"), + ) + ' + ''; + + fish_prompt.body = '' + echo + string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd) (set_color green) ' ❯ ' (set_color normal) + ''; + + fish_right_prompt.body = '' + fish_jj_prompt || fish_vcs_prompt + ''; + + transient_prompt_func.body = '' + echo + string join "" -- (set_color green) '❯ ' (set_color normal) + ''; + + rg.body = '' + if status is-interactive + command rg -p $argv | bat + else + command rg $argv + end + ''; + }; + + interactiveShellInit = lib.concatStringsSep "\n" [ + (builtins.readFile ../files/config/fish/config.fish) + (builtins.readFile ../files/config/fish/semantic-prompt.fish) + (builtins.readFile ../files/config/fish/go-task.fish) + (builtins.readFile ../files/config/fish/jj.fish) + (builtins.readFile ../files/config/fish/vcs.fish) + ]; + + shellAbbrs = { + e = "edit"; + l = "bat"; + ls = "eza"; + tree = "eza --tree"; + top = "btm --basic --enable_cache_memory --enable_gpu_memory --battery"; + ts = "TZ=Z date '+%Y%m%dT%H%M%SZ'"; + w = "viddy -n1 $history[1]"; + xc = "fish_clipboard_copy"; + }; + }; +} diff --git a/common/gnome.nix b/common/gnome.nix new file mode 100644 index 0000000..3aa5800 --- /dev/null +++ b/common/gnome.nix @@ -0,0 +1,194 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib.hm.gvariant; +{ + config = lib.mkIf config.shelman.desktop.enable { + home.packages = with pkgs; [ + gnome-tweaks + gnome-pomodoro + gnomeExtensions.desktop-clock + gnomeExtensions.just-perfection + gnomeExtensions.vitals + ]; + + dconf.settings = { + "org/gnome/desktop/background" = { + color-shading-type = "solid"; + picture-options = "zoom"; + picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png"; + picture-uri-dark = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-d.png"; + primary-color = "#77767B"; + secondary-color = "#000000"; + }; + + "org/gnome/desktop/screensaver" = { + color-shading-type = "solid"; + picture-options = "zoom"; + picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png"; + primary-color = "#77767B"; + secondary-color = "#000000"; + }; + + "org/gnome/desktop/wm/keybindings" = { + close = [ "q" ]; + toggle-on-all-workspaces = [ "s" ]; + toggle-maximized = [ "m" ]; + maximize-vertically = [ "Up" ]; + minimize = [ "comma" ]; + move-to-center = [ "c" ]; + switch-applications = [ "Tab" ]; + switch-windows = [ "Tab" ]; + move-to-workspace-1 = [ "F1" ]; + move-to-workspace-2 = [ "F2" ]; + move-to-workspace-3 = [ "F3" ]; + move-to-workspace-4 = [ "F4" ]; + move-to-workspace-5 = [ "F5" ]; + move-to-workspace-6 = [ "F6" ]; + move-to-workspace-7 = [ "F7" ]; + move-to-workspace-8 = [ "F8" ]; + move-to-workspace-9 = [ "F9" ]; + switch-to-workspace-1 = [ "F1" ]; + switch-to-workspace-2 = [ "F2" ]; + switch-to-workspace-3 = [ "F3" ]; + switch-to-workspace-4 = [ "F4" ]; + switch-to-workspace-5 = [ "F5" ]; + switch-to-workspace-6 = [ "F6" ]; + switch-to-workspace-7 = [ "F7" ]; + switch-to-workspace-8 = [ "F8" ]; + switch-to-workspace-9 = [ "F9" ]; + }; + + "org/gnome/desktop/input-sources" = { + mru-sources = [ + (mkTuple [ + "xkb" + "us" + ]) + ]; + sources = [ + (mkTuple [ + "xkb" + "se+us" + ]) + ]; + xkb-options = [ "caps:ctrl_modifier" ]; + }; + + "org/gnome/desktop/interface" = { + enable-animations = false; + enable-hot-corners = false; + show-battery-percentage = true; + font-antialiasing = "grayscale"; + font-hinting = "slight"; + font-name = "Inter Variable 11"; + document-font-name = "Inter Variable 11"; + monospace-font-name = "BerkeleyMono Nerd Font 11"; + toolkit-accessibility = false; + }; + + "org/gnome/desktop/search-providers" = { + disabled = [ + "org.gnome.Contacts.desktop" + "org.gnome.Nautilus.desktop" + "org.gnome.Calendar.desktop" + "org.gnome.clocks.desktop" + "org.gnome.Epiphany.desktop" + ]; + sort-order = [ + "org.gnome.Contacts.desktop" + "org.gnome.Documents.desktop" + "org.gnome.Nautilus.desktop" + "org.gnome.Settings.desktop" + "org.gnome.Calculator.desktop" + "org.gnome.Calendar.desktop" + "org.gnome.clocks.desktop" + "org.gnome.seahorse.Application.desktop" + "org.gnome.Weather.desktop" + "org.gnome.Characters.desktop" + ]; + }; + + "org/gnome/desktop/wm/preferences" = { + focus-mode = "sloppy"; + num-workspaces = 10; + resize-with-right-button = true; + }; + + "org/gnome/GWeather4" = { + temperature-unit = "centigrade"; + }; + + "org/gnome/Weather" = { + locations = [ + (mkVariant (mkTuple [ + (mkUint32 2) + (mkVariant (mkTuple [ + "Stockholm-Arlanda Airport" + "ESSA" + false + [ + (mkTuple [ + 1.0410888988146176 + 0.31328660073298215 + ]) + ] + [ + (mkTuple [ + 1.0410888988146176 + 0.31328660073298215 + ]) + ] + ])) + ])) + ]; + }; + + "org/gnome/desktop/calendar" = { + show-weekdate = true; + }; + + "org/gnome/mutter" = { + center-new-windows = true; + edge-tiling = true; + }; + + "org/gnome/settings-daemon/plugins/color" = { + night-light-schedule-automatic = false; + night-light-schedule-from = 0.0; + night-light-schedule-to = 0.0; + night-light-temperature = mkUint32 3575; + }; + + "org/gnome/shell" = { + enabled-extensions = [ + "just-perfection-desktop@just-perfection" + "Vitals@CoreCoding.com" + ]; + }; + + "org/gnome/shell/extensions/just-perfection" = { + animation = 0; + notification-banner-position = 2; + osd-position = 6; + panel = false; + panel-in-overview = true; + startup-status = 0; + switcher-popup-delay = false; + top-panel-position = 0; + }; + + "org/gnome/shell/extensions/vitals" = { + update-time = 15; + }; + + "org/gnome/tweaks" = { + show-extensions-notice = false; + }; + + }; + }; +} diff --git a/common/k8s.nix b/common/k8s.nix new file mode 100644 index 0000000..53820e9 --- /dev/null +++ b/common/k8s.nix @@ -0,0 +1,176 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + kail + kapp + krew + kubectl + kubectl-cnpg + kubectl-neat + kubectl-view-secret + kubectx + kubelogin-oidc + kubernetes-helm + kustomize + ]; + + programs.k9s = { + enable = true; + settings.k9s = { + liveViewAutoRefresh = false; + refreshRate = 2; + maxConnRetry = 5; + readOnly = false; + noExitOnCtrlC = false; + skipLatestRevCheck = false; + disablePodCounting = false; + imageScans.enable = false; + logger = { + tail = 100; + buffer = 5000; + sinceSeconds = -1; + textWrap = false; + showTime = false; + }; + shellPod.image = "alpine:3"; + thresholds = { + cpu = { + critical = 90; + warn = 70; + }; + memory = { + critical = 90; + warn = 70; + }; + }; + ui = { + crumbsless = true; + defaultsToFullScreen = true; + enableMouse = false; + headless = true; + logoless = true; + noIcons = false; + reactive = false; + skin = "dieter"; + }; + }; + + views = { + views = { + "v1/pods" = { + columns = [ + "NAME" + "PF" + "READY" + "STATUS" + "NODE" + "AGE" + "RESTARTS" + "IP" + "CPU" + "MEM" + "CPU/R:L" + "MEM/R:L" + "%CPU/R" + "%CPU/L" + "%MEM/R" + "%MEM/L" + ]; + }; + }; + }; + + skins.dieter.k9s = { + body = { + fgColor = "default"; + bgColor = "default"; + logoColor = "default"; + }; + prompt = { + fgColor = "default"; + bgColor = "default"; + suggestColor = "default"; + }; + info = { + fgColor = "default"; + sectionColor = "default"; + }; + dialog = { + fgColor = "default"; + bgColor = "default"; + buttonFgColor = "default"; + buttonBgColor = "default"; + buttonFocusFgColor = "white"; + buttonFocusBgColor = "darkblue"; + labelFgColor = "default"; + fieldFgColor = "default"; + }; + frame = { + border = { + fgColor = "default"; + focusColor = "default"; + }; + menu = { + fgColor = "default"; + keyColor = "default"; + numKeyColor = "default"; + }; + crumbs = { + fgColor = "default"; + bgColor = "default"; + activeColor = "default"; + }; + status = { + newColor = "default"; + modifyColor = "default"; + addColor = "default"; + errorColor = "red"; + highlightColor = "default"; + killColor = "default"; + completedColor = "default"; + }; + title = { + fgColor = "default"; + bgColor = "default"; + highlightColor = "default"; + counterColor = "default"; + filterColor = "default"; + }; + }; + views = { + table = { + fgColor = "default"; + bgColor = "default"; + cursorFgColor = "teal"; + cursorBgColor = "darkblue"; + header = { + fgColor = "default"; + bgColor = "default"; + sorterColor = "blue"; + }; + }; + xray = { + fgColor = "default"; + bgColor = "default"; + cursorColor = "blue"; + graphicColor = "blue"; + }; + yaml = { + keyColor = "default"; + colonColor = "default"; + valueColor = "default"; + }; + logs = { + fgColor = "default"; + bgColor = "default"; + indicator = { + fgColor = "default"; + bgColor = "default"; + toggleOnColor = "default"; + toggleOffColor = "default"; + }; + }; + }; + }; + }; +} diff --git a/common/nix.nix b/common/nix.nix new file mode 100644 index 0000000..3b66fd3 --- /dev/null +++ b/common/nix.nix @@ -0,0 +1,15 @@ +{ outputs, ... }: +{ + nixpkgs = { + config.allowUnfree = true; + overlays = [ + outputs.overlays.additions + outputs.overlays.modifications + outputs.overlays.unstable-packages + ]; + }; + + programs.home-manager.enable = true; + + systemd.user.startServices = "sd-switch"; +} diff --git a/common/nvim.nix b/common/nvim.nix new file mode 100644 index 0000000..83f255b --- /dev/null +++ b/common/nvim.nix @@ -0,0 +1,19 @@ +{ ... }: +{ + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + withNodeJs = false; + withPython3 = false; + withRuby = false; + }; + + xdg.configFile = { + "nvim" = { + recursive = true; + source = ./../files/config/nvim; + }; + }; +} diff --git a/common/scripts.nix b/common/scripts.nix new file mode 100644 index 0000000..4848c39 --- /dev/null +++ b/common/scripts.nix @@ -0,0 +1,17 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + home.file = { + ".local/bin" = { + recursive = true; + source = ./../files/scripts; + }; + + }; + + home.sessionPath = [ "$HOME/.local/bin" ]; +} diff --git a/common/ssh.nix b/common/ssh.nix new file mode 100644 index 0000000..1f59463 --- /dev/null +++ b/common/ssh.nix @@ -0,0 +1,14 @@ +{ ... }: +{ + programs.ssh = { + enable = true; + addKeysToAgent = "yes"; + compression = false; + controlMaster = "auto"; + controlPath = "\${XDG_RUNTIME_DIR}/ssh_control:%h:%p:%r"; + controlPersist = "15m"; + extraConfig = '' + PreferredAuthentications publickey + ''; + }; +} diff --git a/common/utils.nix b/common/utils.nix new file mode 100644 index 0000000..ef5f380 --- /dev/null +++ b/common/utils.nix @@ -0,0 +1,60 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + dust + jless + procs + viddy + ]; + + programs = { + bat = { + enable = true; + config = { + italic-text = "always"; + paging = "auto"; + style = "plain"; + theme = "ansi"; + }; + }; + + bottom.enable = true; + + direnv = { + enable = true; + nix-direnv.enable = true; + silent = false; + }; + + eza = { + enable = true; + enableFishIntegration = true; + }; + + fd.enable = true; + + fzf = { + enable = true; + enableFishIntegration = true; + }; + + jq.enable = true; + less.enable = true; + lesspipe.enable = true; + tmux.enable = true; + + ripgrep = { + enable = true; + arguments = [ + "--glob=!.git/*" + "--glob=!.jj/*" + ]; + }; + + zoxide = { + enable = true; + enableFishIntegration = true; + options = [ "--cmd=cd" ]; + }; + }; +} diff --git a/common/vcs.nix b/common/vcs.nix new file mode 100644 index 0000000..e63f1d3 --- /dev/null +++ b/common/vcs.nix @@ -0,0 +1,166 @@ +{ config, pkgs, ... }: +{ + + home.packages = with pkgs; [ + delta + diffedit3 + difftastic + git-graph + git-town + lazyjj + tea + ]; + + programs.gh = { + enable = true; + }; + + programs.git = { + enable = true; + + aliases = { + b = "branch -va"; + cl = "clone --filter=blob:none"; + co = "checkout"; + d = "diff --stat -p -C --color-words"; + ds = "diff --staged --stat -p -C --color-words"; + g = "graph -S -m simple -s round"; + guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"; + lla = "log --graph --all --topo-order --pretty='format:\t%x1B[0;3;36m%as %x1B[0;95;3m%<(12)%al %x1B[3;32m• %h%x1B[0;1;92m%d%x1B[0m %s'"; + ll = "log --pretty='format:%x1B[0;3;36m%as %G? %x1B[0;95;3m%<(12,trunc)%al %x1B[3;32m• %h%x1B[0;1;92m%(decorate:prefix= [,suffix=]%n)%>|(35)%Creset %s'"; + patch = "!git --no-pager diff --no-color"; + pullr = "pull --rebase --autostash"; + sh = "show --stat -p -C --color-words --show-signature"; + st = "status -sb"; + }; + + delta = { + enable = true; + options = { + file-added-label = "[+]"; + file-decoration-style = "none"; + file-modified-label = "[*]"; + file-removed-label = "[-]"; + file-renamed-label = "[>]"; + file-style = "bold reverse"; + file-transformation = "s/$/ ░▒▓/"; + hunk-header-decoration-style = "none"; + hunk-header-file-style = "bold"; + hunk-header-line-number-style = "bold"; + hunk-header-style = "bold"; + hunk-label = "⯁"; + hunk-label-style = "bold"; + line-numbers = true; + max-line-distance = "0.9"; + navigate = true; + }; + }; + + extraConfig = { + apply.whitespace = "nowarn"; + blame.date = "relative"; + branch.main.rebase = true; + color = { + branch = "auto"; + diff = "auto"; + status = "auto"; + ui = "auto"; + }; + column.ui = "auto"; + core = { + compression = 3; + looseCompression = 3; + excludesfile = "~/.config/git/ignore"; + }; + fetch = { + prune = true; + prunetags = true; + showForcedUpdates = true; + }; + gpg = { + format = "ssh"; + ssh = { + allowedSignersFile = "${config.home.homeDirectory}/.ssh/authorized_keys"; + defaultKeyCommand = "${config.home.homeDirectory}/.local/bin/git-signing-key"; + }; + }; + init.defaultBranch = "main"; + merge.conflictstyle = "zdiff3"; + pack = { + compression = 3; + threads = 0; + }; + pull.rebase = true; + push.default = "tracking"; + rebase.autosquash = true; + rerere.enabled = true; + tag.sort = "-v:refname"; + user.useConfigOnly = true; + }; + + ignores = [ + "*~" + "*.a" + "*.class" + "*.iml" + "*.ipr" + "*.iwr" + "*.iws" + "*.la" + "*.o" + "*.pyc" + "*.so" + "*.swp" + ".direnv" + ".idea" + ".null-ls_*" + ]; + + signing = { + key = null; + signByDefault = true; + }; + }; + + programs.gitui = { + enable = true; + keyConfig = '' + ( + open_help: Some(( code: F(1), modifiers: "")), + move_left: Some(( code: Char('h'), modifiers: "")), + move_right: Some(( code: Char('l'), modifiers: "")), + move_up: Some(( code: Char('k'), modifiers: "")), + move_down: Some(( code: Char('j'), modifiers: "")), + popup_up: Some(( code: Char('p'), modifiers: "CONTROL")), + popup_down: Some(( code: Char('n'), modifiers: "CONTROL")), + page_up: Some(( code: Char('b'), modifiers: "CONTROL")), + page_down: Some(( code: Char('f'), modifiers: "CONTROL")), + home: Some(( code: Char('g'), modifiers: "")), + end: Some(( code: Char('G'), modifiers: "SHIFT")), + shift_up: Some(( code: Char('K'), modifiers: "SHIFT")), + shift_down: Some(( code: Char('J'), modifiers: "SHIFT")), + edit_file: Some(( code: Char('I'), modifiers: "SHIFT")), + status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")), + diff_reset_lines: Some(( code: Char('u'), modifiers: "")), + diff_stage_lines: Some(( code: Char('s'), modifiers: "")), + stashing_save: Some(( code: Char('w'), modifiers: "")), + stashing_toggle_index: Some(( code: Char('m'), modifiers: "")), + stash_open: Some(( code: Char('l'), modifiers: "")), + abort_merge: Some(( code: Char('M'), modifiers: "SHIFT")), + ) + ''; + theme = '' + ( + selection_bg: Some(Black), + selection_fg: Some(Reset), + cmdbar_bg: Some(Reset), + cmdbar_extra_lines_bg: Some(Reset), + ) + ''; + }; + + programs.jujutsu = { + enable = true; + package = pkgs.jujutsu-openssh; + }; +} diff --git a/common/web.nix b/common/web.nix new file mode 100644 index 0000000..5062a94 --- /dev/null +++ b/common/web.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + config = lib.mkIf config.shelman.desktop.enable { + + home.packages = with pkgs; [ tor-browser ]; + + programs.firefox = { + enable = true; + }; + + programs.chromium = { + enable = true; + package = pkgs.ungoogled-chromium; + }; + + }; +} diff --git a/common/wezterm.nix b/common/wezterm.nix new file mode 100644 index 0000000..6555bdb --- /dev/null +++ b/common/wezterm.nix @@ -0,0 +1,11 @@ +{ config, lib, ... }: +{ + config = lib.mkIf config.shelman.desktop.enable { + + programs.wezterm = { + enable = true; + extraConfig = builtins.readFile ./../files/config/wezterm/wezterm.lua; + }; + + }; +} diff --git a/files/config/fish/config.fish b/files/config/fish/config.fish new file mode 100644 index 0000000..dc30f48 --- /dev/null +++ b/files/config/fish/config.fish @@ -0,0 +1,59 @@ +# Bindings +bind \cg __zoxide_zi_repaint +bind \cJ forward-char +bind \cn history-prefix-search-forward +bind \cp history-prefix-search-backward + +# Settings +set fish_greeting +set fish_emoji_width 2 + +# xdg-open support on ssh remotes +if test -n SSH_TTY; and type -q wezterm-open-url + set -x DE generic + set -x BROWSER wezterm-open-url +end + +# Colors +set fish_color_command --bold +set fish_color_comment --italics --dim +set fish_color_autosuggestion --italics --bold red +set fish_color_cancel +set fish_color_command --bold +set fish_color_comment --italics --dim +set fish_color_cwd normal +set fish_color_cwd_root normal +set fish_color_end +set fish_color_error +set fish_color_escape +set fish_color_gray 6c7086 +set fish_color_history_current +set fish_color_host normal +set fish_color_host_remote yellow +set fish_color_keyword +set fish_color_match +set fish_color_normal normal +set fish_color_operator +set fish_color_option +set fish_color_param normal +set fish_color_quote --italics +set fish_color_redirection +set fish_color_search_match -r +set fish_color_selection -r +set fish_color_status normal +set fish_color_string --italics +set fish_color_user normal +set fish_color_valid_path +set fish_pager_color_background +set fish_pager_color_completion normal +set fish_pager_color_description --dim +set fish_pager_color_prefix --underline +set fish_pager_color_progress --dim +set fish_pager_color_secondary_background +set fish_pager_color_secondary_completion +set fish_pager_color_secondary_description +set fish_pager_color_secondary_prefix +set fish_pager_color_selected_background -r +set fish_pager_color_selected_completion +set fish_pager_color_selected_description +set fish_pager_color_selected_prefix diff --git a/files/config/fish/go-task.fish b/files/config/fish/go-task.fish new file mode 100644 index 0000000..6c7e2cf --- /dev/null +++ b/files/config/fish/go-task.fish @@ -0,0 +1,37 @@ +set GO_TASK_PROGNAME task + +function __task_get_tasks --description "Prints all available tasks with their description" + # Read the list of tasks (and potential errors) + $GO_TASK_PROGNAME --list-all 2>&1 | read -lz rawOutput + + # Return on non-zero exit code (for cases when there is no Taskfile found or etc.) + if test $status -ne 0 + return + end + + # Grab names and descriptions (if any) of the tasks + set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(aliases.*/\1\t\2/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0) + if test $output + echo $output + end +end + +complete -c $GO_TASK_PROGNAME -d 'Runs the specified task(s). Falls back to the "default" task if no task name was specified, or lists all tasks if an unknown task name was + specified.' -xa "(__task_get_tasks)" + +complete -c $GO_TASK_PROGNAME -s c -l color -d 'colored output (default true)' +complete -c $GO_TASK_PROGNAME -s d -l dir -d 'sets directory of execution' +complete -c $GO_TASK_PROGNAME -l dry -d 'compiles and prints tasks in the order that they would be run, without executing them' +complete -c $GO_TASK_PROGNAME -s f -l force -d 'forces execution even when the task is up-to-date' +complete -c $GO_TASK_PROGNAME -s h -l help -d 'shows Task usage' +complete -c $GO_TASK_PROGNAME -s i -l init -d 'creates a new Taskfile.yml in the current folder' +complete -c $GO_TASK_PROGNAME -s l -l list -d 'lists tasks with description of current Taskfile' +complete -c $GO_TASK_PROGNAME -s o -l output -d 'sets output style: [interleaved|group|prefixed]' -xa "interleaved group prefixed" +complete -c $GO_TASK_PROGNAME -s p -l parallel -d 'executes tasks provided on command line in parallel' +complete -c $GO_TASK_PROGNAME -s s -l silent -d 'disables echoing' +complete -c $GO_TASK_PROGNAME -l status -d 'exits with non-zero exit code if any of the given tasks is not up-to-date' +complete -c $GO_TASK_PROGNAME -l summary -d 'show summary about a task' +complete -c $GO_TASK_PROGNAME -s t -l taskfile -d 'choose which Taskfile to run. Defaults to "Taskfile.yml"' +complete -c $GO_TASK_PROGNAME -s v -l verbose -d 'enables verbose mode' +complete -c $GO_TASK_PROGNAME -l version -d 'show Task version' +complete -c $GO_TASK_PROGNAME -s w -l watch -d 'enables watch of the given task' diff --git a/files/config/fish/jj.fish b/files/config/fish/jj.fish new file mode 100644 index 0000000..78be3e2 --- /dev/null +++ b/files/config/fish/jj.fish @@ -0,0 +1,338 @@ +# TODO: passthru other args? E.g.. --at-operation, --repository +function __jj + command jj --ignore-working-copy --color=never --quiet $argv 2>/dev/null +end + +# Aliases +# Based on https://github.com/fish-shell/fish-shell/blob/cd71359c42f633d9d71a63591ae16d150407a2b2/share/completions/git.fish#L625. +# +# Aliases are stored in global variables. +# `__jj_aliases` is a list of all aliases and `__jj_alias_$alias` is the command line for the alias. +function __jj_add_alias + set -l alias $argv[1] + set -l alias_escaped (string escape --style=var -- $alias) + set -g __jj_alias_$alias_escaped $argv + set --append -g __jj_aliases $alias +end + +__jj config list aliases -T 'concat(name, "\t", value, "\n")' --include-defaults | while read -l config_alias + set -l parsed (string match --regex '^aliases\.(.+)\t(.*)$' --groups-only -- $config_alias) + set -l alias $parsed[1] + set -l command $parsed[2] + set -l args $alias + # Replace wrapping `[]` if any + set -l command (string replace -r --all '^\[|]$' "" -- $command) + while test (string length -- $command) -gt 0 + set -l parsed (string match -r '^"((?:\\\"|[^"])*?)"(?:,\s)?(.*)$' --groups-only -- $command) + set --append args $parsed[1] + set command $parsed[2] + end + __jj_add_alias $args +end + +__jj_add_alias ci commit +__jj_add_alias desc describe +__jj_add_alias op operation +__jj_add_alias st status + +# Resolve aliases that call another alias. +for alias in $__jj_aliases + set -l handled $alias + + while true + set -l alias_escaped (string escape --style=var -- $alias) + set -l alias_varname __jj_alias_$alias_escaped + set -l aliased_command $$alias_varname[1][2] + set -l aliased_escaped (string escape --style=var -- $aliased_command) + set -l aliased_varname __jj_alias_$aliased_escaped + set -q $aliased_varname + or break + + # Prevent infinite recursion + contains $aliased_escaped $handled + and break + + # Expand alias in cmdline + set -l aliased_cmdline $$aliased_varname[1][2..-1] + set --append aliased_cmdline $$alias_varname[1][3..-1] + set -g $alias_varname $$alias_varname[1][1] $aliased_cmdline + set --append handled $aliased_escaped + end +end + +function __jj_aliases_with_descriptions + for alias in $__jj_aliases + set -l alias_escaped (string escape --style=var -- $alias) + set -l alias_varname __jj_alias_$alias_escaped + set -l aliased_cmdline (string join " " -- $$alias_varname[1][2..-1] | string replace -r --all '\\\"' '"') + printf "%s\talias: %s\n" $alias $aliased_cmdline + end +end + +# Based on https://github.com/fish-shell/fish-shell/blob/2d4e42ee93327b9cfd554a0d809f85e3d371e70e/share/functions/__fish_seen_subcommand_from.fish. +# Test to see if we've seen a subcommand from a list. +# This logic may seem backwards, but the commandline will often be much shorter than the list. +function __jj_seen_subcommand_from + set -l cmd (commandline -opc) + set -e cmd[1] + + # Check command line arguments first. + for i in $cmd + if contains -- $i $argv + return 0 + end + end + + # Check aliases. + set -l alias $cmd[1] + set -l alias_escaped (string escape --style=var -- $alias) + set -l varname __jj_alias_$alias_escaped + set -q $varname + or return 1 + + for i in $$varname[1][2..-1] + if contains -- $i $argv + return 0 + end + end + + return 1 +end + +function __jj_changes + __jj log --no-graph --limit 1000 -r $argv[1] \ + -T 'separate("\t", change_id.shortest(), if(description, description.first_line(), "(no description set)")) ++ "\n"' +end + +function __jj_branches + set -f filter $argv[1] + if string length --quiet -- $argv[2] + __jj branch list --all-remotes -r "$argv[2]" \ + -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted branch)\") ++ \"\n\")" + else + __jj branch list --all-remotes \ + -T "if($filter, name ++ if(remote, \"@\" ++ remote) ++ \"\t\" ++ if(normal_target, normal_target.change_id().shortest() ++ \": \" ++ if(normal_target.description(), normal_target.description().first_line(), \"(no description set)\"), \"(conflicted branch)\") ++ \"\n\")" + end +end + +function __jj_all_branches + __jj_branches '!remote || !remote.starts_with("git")' $argv[1] +end + +function __jj_local_branches + __jj_branches '!remote' '' +end + +function __jj_remote_branches + __jj_branches 'remote && !remote.starts_with("git")' '' +end + +function __jj_all_changes + if string length --quiet -- $argv[1] + set -f REV $argv[1] + else + set -f REV "all()" + end + __jj_changes $REV + __jj_all_branches $REV +end + +function __jj_mutable_changes + set -f REV "mutable()" + __jj_changes $REV + __jj_all_branches $REV +end + +function __jj_revision_modified_files + if test $argv[1] = "@" + set -f suffix "" + else + set -l change_id (__jj log --no-graph --limit 1 -T 'change_id.shortest()') + set -f suffix " in $change_id" + end + + __jj diff -r $argv[1] --summary | while read -l line + set -l file (string split " " -m 1 -- $line) + switch $file[1] + case M + set -f change Modified + case D + set -f change Deleted + case A + set -f change Added + end + printf "%s\t%s%s\n" $file[2] $change $suffix + end +end + +function __jj_remotes + __jj git remote list | while read -l remote + printf "%s\t%s\n" (string split " " -m 1 -- $remote) + end +end + +function __jj_operations + __jj operation log --no-graph --limit 1000 -T 'separate("\t", id.short(), description) ++ "\n"' +end + +function __jj_parse_revision + set -l cmd (commandline -opc) + set -e cmd[1] + set -l return_next false + set -l return_value 1 + + # Check aliases. + set -l alias $cmd[1] + set -l alias_escaped (string escape --style=var -- $alias) + set -l varname __jj_alias_$alias_escaped + + if set -q $varname + set cmd $$varname[1][2..-1] $cmd[2..-1] + end + + # Check command line arguments first. + for i in $cmd + if $return_next + echo $i + set return_value 0 + else if contains -- $i -r --revision --from + set return_next true + else + set -l match (string match --regex '^(?:-r=?|--revision=|--from=)(.+)\s*$' --groups-only -- $i) + if set -q match[1] + echo $match[1] + set return_value 0 + end + end + end + + return $return_value +end + +function __jj_revision_files + set -l description (__jj log --no-graph --limit 1 -r $argv[1] -T 'change_id.shortest() ++ ": " ++ coalesce(description.first_line().substr(0, 30), "(no description set)")') + __jj file list -r $argv[1] | while read -l file + printf "%s\t%s\n" $file $description + end +end + +function __jj_revision_conflicted_files + __jj resolve --list -r $argv[1] | while read -l line + set -l file (string split " " -m 1 -- $line) + printf "%s\t%s\n" $file[1] $file[2] + end +end + +function __jj_parse_revision_files + set -l rev (__jj_parse_revision) + if test $status -eq 1 + set rev "@" + end + __jj_revision_files $rev +end + +function __jj_parse_revision_conflicted_files + set -l rev (__jj_parse_revision) + if test $status -eq 1 + set rev "@" + end + __jj_revision_conflicted_files $rev +end + +function __jj_parse_revision_files_or_wc_modified_files + set -l revs (__jj_parse_revision) + if test $status -eq 1 + __jj_revision_modified_files "@" + else + for rev in $revs + __jj_revision_files $rev + end + end +end + +function __jj_parse_revision_modified_files_or_wc_modified_files + set -l revs (__jj_parse_revision) + if test $status -eq 1 + __jj_revision_modified_files "@" + else + for rev in $revs + __jj_revision_modified_files $rev + end + end +end + +# Aliases. +complete -f -c jj -n __fish_use_subcommand -a '(__jj_aliases_with_descriptions)' + +# Files. +complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from show' -ka '(__jj_parse_revision_files)' +complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from chmod' -ka '(__jj_parse_revision_files)' +complete -f -c jj -n '__jj_seen_subcommand_from commit' -ka '(__jj_revision_modified_files "@")' +complete -c jj -n '__jj_seen_subcommand_from diff' -ka '(__jj_parse_revision_files_or_wc_modified_files)' +complete -c jj -n '__jj_seen_subcommand_from interdiff' -ka '(__jj_parse_revision_files)' +complete -f -c jj -n '__jj_seen_subcommand_from resolve' -ka '(__jj_parse_revision_conflicted_files)' +complete -f -c jj -n '__jj_seen_subcommand_from restore' -ka '(__jj_parse_revision_files_or_wc_modified_files)' +complete -f -c jj -n '__jj_seen_subcommand_from split' -ka '(__jj_parse_revision_modified_files_or_wc_modified_files)' +complete -f -c jj -n '__jj_seen_subcommand_from squash' -ka '(__jj_parse_revision_modified_files_or_wc_modified_files)' +complete -f -c jj -n '__jj_seen_subcommand_from untrack' -ka '(__jj_parse_revision_files_or_wc_modified_files)' + +# Revisions. +complete -f -c jj -n '__jj_seen_subcommand_from abandon' -ka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from backout' -s r -l revision -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from backout' -s d -l destination -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from show' -s r -l revision -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from chmod' -s r -l revision -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from describe' -ka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from diff' -s r -l revision -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from diff' -l from -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from diff' -l to -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -s r -l revision -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -l from -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from diffedit' -l to -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from duplicate' -ka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from edit' -ka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from file; and __jj_seen_subcommand_from list' -s r -l revision -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from interdiff' -l from -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from interdiff' -l to -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from log' -s r -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from new' -ka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from new' -s A -l after -l insert-after -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from new' -s B -l before -l insert-before -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from obslog' -s r -l revision -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from parallelize' -ka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s r -l revisions -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s s -l source -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s b -l branch -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s d -l destination -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s A -l after -l insert-after -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from rebase' -s B -l before -l insert-before -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from resolve' -s r -l revision -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from restore' -l from -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from restore' -l to -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from restore' -s c -l changes-in -rka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from show' -ka '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from split' -s r -l revision -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from squash' -s r -l revision -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from squash' -l from -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from squash' -l to -l into -rka '(__jj_mutable_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from unsquash' -s r -l revision -rka '(__jj_mutable_changes)' + +# Branches. +complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from delete forget rename set d f r s' -ka '(__jj_local_branches)' +complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from track t' -ka '(__jj_branches "remote && !tracked" "")' +complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from untrack' -ka '(__jj_branches "remote && tracked && !remote.starts_with(\"git\")" "")' +complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from create move set c m s' -s r -l revision -kra '(__jj_all_changes)' +complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from move' -l from -rka '(__jj_changes "all()")' +complete -f -c jj -n '__jj_seen_subcommand_from branch; and __jj_seen_subcommand_from move' -l to -rka '(__jj_changes "all()")' + +# Git. +complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s c -l change -kra '(__jj_changes "all()")' +complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from push' -s r -l revisions -kra '(__jj_changes "all()")' +complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -s b -l branch -rka '(__jj_local_branches)' +complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from fetch push' -l remote -rka '(__jj_remotes)' +complete -f -c jj -n '__jj_seen_subcommand_from git; and __jj_seen_subcommand_from remote; and __jj_seen_subcommand_from remove rename set-url' -ka '(__jj_remotes)' + +# Operations. +complete -f -c jj -l at-op -l at-operation -rka '(__jj_operations)' +complete -f -c jj -n '__jj_seen_subcommand_from undo' -ka '(__jj_operations)' +complete -f -c jj -n '__jj_seen_subcommand_from operation; and __jj_seen_subcommand_from abandon undo restore' -ka '(__jj_operations)' diff --git a/files/config/fish/semantic-prompt.fish b/files/config/fish/semantic-prompt.fish new file mode 100644 index 0000000..2656f40 --- /dev/null +++ b/files/config/fish/semantic-prompt.fish @@ -0,0 +1,55 @@ +## Semantic prompt (for Wezterm) + +set _fishprompt_aid "fish"$fish_pid +set _fishprompt_started 0 +# empty if running; or a numeric exit code; or CANCEL +set _fishprompt_postexec "" + +functions -c fish_prompt _fishprompt_saved_prompt +set _fishprompt_prompt_count 0 +set _fishprompt_disp_count 0 +function _fishprompt_start --on-event fish_prompt + set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1) + # don't use post-exec, because it is called *before* omitted-newline output + if [ -n "$_fishprompt_postexec" ] + printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid + end + printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid +end + +function fish_prompt + set _fishprompt_disp_count (math $_fishprompt_disp_count + 1) + printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt)) + set _fishprompt_started 1 + set _fishprompt_postexec "" +end + +function _fishprompt_preexec --on-event fish_preexec + if [ "$_fishprompt_started" = 1 ] + printf "\033]133;C;\007" + end + set _fishprompt_started 0 +end + +function _fishprompt_postexec --on-event fish_postexec + set _fishprompt_postexec $status + _fishprompt_start +end + +function __fishprompt_cancel --on-event fish_cancel + set _fishprompt_postexec CANCEL + _fishprompt_start +end + +function _fishprompt_exit --on-process %self + if [ "$_fishprompt_started" = 1 ] + printf "\033]133;Z;aid=%s\007" $_fishprompt_aid + end +end + +if functions -q fish_right_prompt + functions -c fish_right_prompt _fishprompt_saved_right_prompt + function fish_right_prompt + printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt)) + end +end diff --git a/files/config/fish/vcs.fish b/files/config/fish/vcs.fish new file mode 100644 index 0000000..d86672a --- /dev/null +++ b/files/config/fish/vcs.fish @@ -0,0 +1,72 @@ + +function __jj_in_repo + jj --ignore-working-copy --quiet root >>/dev/null 2>&1 +end + +function vcs_root + jj workspace root --ignore-working-copy 2>/dev/null || git rev-parse --show-toplevel 2>/dev/null || pwd +end + +function vcs_broot + br (vcs_root) + commandline -f repaint +end + +function vcs_jump + set _dir (vcs_root) + if [ "$_dir" = "$PWD" ] + set _dir (br -f --conf "$HOME/.config/broot/conf.toml") + end + [ -n "$_dir" ] && pushd $_dir >>/dev/null + commandline -f repaint +end + +function vcs_status + if __jj_in_repo + jj status --ignore-working-copy + else + git status -sb + end + commandline -f repaint +end + +function vcs_diff + if __jj_in_repo + jj show $argv + else + git diff --stat -p -C --color-words $argv + end + commandline -f repaint +end + + +function vcs_log + if __jj_in_repo + jj log --ignore-working-copy $argv + else + git diff --stat -p -C --color-words $argv + end + commandline -f repaint +end + +function vcs_ui + if __jj_in_repo + lazyjj + else + gitui + end + commandline -f repaint +end + +# Abbreviations + +abbr -a d vcs_diff +abbr -a s vcs_status + +# Bindings +bind \c_ vcs_jump +bind \ea vcs_log +bind \ee vcs_broot +bind \eg vcs_ui +bind \eS vcs_diff +bind \es vcs_status diff --git a/.config/nvim/init.lua b/files/config/nvim/init.lua similarity index 100% rename from .config/nvim/init.lua rename to files/config/nvim/init.lua diff --git a/.config/nvim/lua/config/autocmds.lua b/files/config/nvim/lua/config/autocmds.lua similarity index 100% rename from .config/nvim/lua/config/autocmds.lua rename to files/config/nvim/lua/config/autocmds.lua diff --git a/.config/nvim/lua/config/keymaps.lua b/files/config/nvim/lua/config/keymaps.lua similarity index 100% rename from .config/nvim/lua/config/keymaps.lua rename to files/config/nvim/lua/config/keymaps.lua diff --git a/.config/nvim/lua/config/lazy.lua b/files/config/nvim/lua/config/lazy.lua similarity index 57% rename from .config/nvim/lua/config/lazy.lua rename to files/config/nvim/lua/config/lazy.lua index d5db9cc..7d70096 100644 --- a/.config/nvim/lua/config/lazy.lua +++ b/files/config/nvim/lua/config/lazy.lua @@ -10,8 +10,26 @@ require("lazy").setup({ spec = { -- add LazyVim and import its plugins { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - -- import any extras modules here - -- import/override with your plugins + -- extras + { import = "lazyvim.plugins.extras.dap.core" }, + { import = "lazyvim.plugins.extras.editor.overseer" }, + { import = "lazyvim.plugins.extras.editor.telescope" }, + { import = "lazyvim.plugins.extras.formatting.prettier" }, + { import = "lazyvim.plugins.extras.lang.go" }, + { import = "lazyvim.plugins.extras.lang.json" }, + { import = "lazyvim.plugins.extras.lang.markdown" }, + { import = "lazyvim.plugins.extras.lang.nix" }, + { import = "lazyvim.plugins.extras.lang.rust" }, + { import = "lazyvim.plugins.extras.lang.toml" }, + { import = "lazyvim.plugins.extras.lang.typescript" }, + { import = "lazyvim.plugins.extras.lang.yaml" }, + { import = "lazyvim.plugins.extras.lsp.none-ls" }, + { import = "lazyvim.plugins.extras.test.core" }, + { import = "lazyvim.plugins.extras.ui.edgy" }, + { import = "lazyvim.plugins.extras.ui.treesitter-context" }, + { import = "lazyvim.plugins.extras.util.gitui" }, + { import = "lazyvim.plugins.extras.util.project" }, + -- plugins { import = "plugins" }, }, defaults = { @@ -23,14 +41,6 @@ require("lazy").setup({ version = false, -- always use the latest git commit -- version = "*", -- try installing the latest stable version for plugins that support semver }, - icons = { - overseer = { - Canceled = " ", - Failure = " ", - Success = " ", - Running = " ", - }, - }, checker = { enabled = false }, -- automatically check for plugin updates performance = { rtp = { diff --git a/.config/nvim/lua/config/options.lua b/files/config/nvim/lua/config/options.lua similarity index 60% rename from .config/nvim/lua/config/options.lua rename to files/config/nvim/lua/config/options.lua index 7b694a6..75e6b54 100644 --- a/.config/nvim/lua/config/options.lua +++ b/files/config/nvim/lua/config/options.lua @@ -1,27 +1,5 @@ --- Options are automatically loaded before lazy.nvim startup --- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua --- Add any additional options here - vim.opt.number = true vim.opt.relativenumber = false --- vim.opt.clipboard = "" -function no_paste(reg) - return function(lines) - -- Do nothing! We can't paste with OSC52 - end -end - -vim.g.clipboard = { - name = "OSC 52", - copy = { - ["+"] = require("vim.ui.clipboard.osc52").copy("+"), - ["*"] = require("vim.ui.clipboard.osc52").copy("*"), - }, - paste = { - ["+"] = no_paste("+"), -- Pasting disabled - ["*"] = no_paste("*"), -- Pasting disabled - }, -} vim.g.do_filetype_lua = 1 vim.g.root_spec = { { ".git", "lua" }, "lsp", "cwd" } diff --git a/.config/nvim/lua/plugins/coding.lua b/files/config/nvim/lua/plugins/coding.lua similarity index 100% rename from .config/nvim/lua/plugins/coding.lua rename to files/config/nvim/lua/plugins/coding.lua diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/files/config/nvim/lua/plugins/colorscheme.lua similarity index 52% rename from .config/nvim/lua/plugins/colorscheme.lua rename to files/config/nvim/lua/plugins/colorscheme.lua index 59cf784..b2967b9 100644 --- a/.config/nvim/lua/plugins/colorscheme.lua +++ b/files/config/nvim/lua/plugins/colorscheme.lua @@ -1,8 +1,6 @@ return { { - "shelmangroup/dieter.nvim", - dir = "/home/dln/src/git.shelman.io/shelmangroup/dieter.nvim", - version = false, + "https://git.shelman.io/shelmangroup/dieter.nvim.git", lazy = false, priority = 1000, }, diff --git a/files/config/nvim/lua/plugins/editor.lua b/files/config/nvim/lua/plugins/editor.lua new file mode 100644 index 0000000..e237117 --- /dev/null +++ b/files/config/nvim/lua/plugins/editor.lua @@ -0,0 +1,95 @@ +return { + { + "folke/flash.nvim", + enabled = false, + }, + + { + "telescope.nvim", + keys = { + { + "", + function() + local telescope = require("telescope") + local jj_pick_status, jj_res = pcall(telescope.extensions.jj.files, opts) + if jj_pick_status then + return + end + local git_files_status, git_res = pcall(telescope.builtin.git_files, opts) + if not git_files_status then + error("Could not launch jj/git files: \n" .. jj_res .. "\n" .. git_res) + end + end, + desc = "VCS Files", + }, + }, + opts = function(_, opts) + local actions = require("telescope.actions") + opts.defaults = { + layout_strategy = "horizontal", + layout_config = { + anchor = "top", + horizontal = { + prompt_position = "top", + mirror = false, + preview_width = 0.49, + -- preview_height = 0.5, + }, + width = 0.99, + height = 0.9, + preview_cutoff = 10, + }, + mappings = { + i = { + [""] = actions.close, -- close popup + [""] = false, -- clear prompt + [""] = false, -- clear prompt + }, + }, + path_display = { "filename_first" }, + -- previewer = false, + preview = { + -- hide_on_startup = true, + }, + sorting_strategy = "ascending", + winblend = 0, + wrap_results = true, + } + end, + }, + + { "avm99963/vim-jjdescription", lazy = false }, + + { + "zschreur/telescope-jj.nvim", + keys = { + { + "jc", + function() + require("telescope").extensions.jj.conflicts() + end, + desc = "jj conflicts", + }, + { + "jd", + function() + require("telescope").extensions.jj.diff() + end, + desc = "jj diffs", + }, + { + "jf", + function() + require("telescope").extensions.jj.files() + end, + desc = "jj files", + }, + }, + config = function() + LazyVim.on_load("telescope.nvim", function() + local telescope = require("telescope") + telescope.load_extension("jj") + end) + end, + }, +} diff --git a/.config/nvim/lua/plugins/extras.lua b/files/config/nvim/lua/plugins/extras.lua similarity index 100% rename from .config/nvim/lua/plugins/extras.lua rename to files/config/nvim/lua/plugins/extras.lua diff --git a/.config/nvim/lua/plugins/formatting.lua b/files/config/nvim/lua/plugins/formatting.lua similarity index 91% rename from .config/nvim/lua/plugins/formatting.lua rename to files/config/nvim/lua/plugins/formatting.lua index 1cd976c..f1272ab 100644 --- a/.config/nvim/lua/plugins/formatting.lua +++ b/files/config/nvim/lua/plugins/formatting.lua @@ -5,6 +5,7 @@ return { formatters_by_ft = { ["cue"] = { { "cue_fmt" } }, ["html"] = { { "prettierd", "prettier" } }, + ["nix"] = { "nixfmt" }, ["sass"] = { { "prettierd", "prettier" } }, ["proto"] = { { "buf" } }, ["terraform"] = { { "terraform_fmt" } }, diff --git a/.config/nvim/lua/plugins/incline.lua b/files/config/nvim/lua/plugins/incline.lua similarity index 100% rename from .config/nvim/lua/plugins/incline.lua rename to files/config/nvim/lua/plugins/incline.lua diff --git a/.config/nvim/lua/plugins/lsp.lua b/files/config/nvim/lua/plugins/lsp.lua similarity index 100% rename from .config/nvim/lua/plugins/lsp.lua rename to files/config/nvim/lua/plugins/lsp.lua diff --git a/.config/nvim/lua/plugins/treesitter.lua b/files/config/nvim/lua/plugins/treesitter.lua similarity index 100% rename from .config/nvim/lua/plugins/treesitter.lua rename to files/config/nvim/lua/plugins/treesitter.lua diff --git a/.config/nvim/lua/plugins/ui.lua b/files/config/nvim/lua/plugins/ui.lua similarity index 90% rename from .config/nvim/lua/plugins/ui.lua rename to files/config/nvim/lua/plugins/ui.lua index fd5b977..0fc1c59 100644 --- a/.config/nvim/lua/plugins/ui.lua +++ b/files/config/nvim/lua/plugins/ui.lua @@ -90,7 +90,7 @@ return { }, }, - messages = { enabled = true }, + messages = { enabled = true, view = "mini" }, lsp = { hover = { enabled = false }, signature = { enabled = false }, @@ -105,10 +105,18 @@ return { { "rcarriga/nvim-notify", opts = { - stages = "fade_in_slide_out", timeout = 1000, render = "wrapped-compact", top_down = false, + max_width = function() + return math.floor(vim.o.columns * 0.5) + end, + on_open = function(win) + vim.api.nvim_win_set_config(win, { + focusable = false, + zindex = 100, + }) + end, }, }, @@ -120,7 +128,13 @@ return { { "ahmedkhalf/project.nvim", opts = { + exclude_dirs = { + "~/.cargo/*", + "~/.config/*", + "/tmp/*", + }, manual_mode = false, + patterns = { ".git", ".jj" }, }, }, } diff --git a/.config/wezterm/wezterm.lua b/files/config/wezterm/wezterm.lua similarity index 91% rename from .config/wezterm/wezterm.lua rename to files/config/wezterm/wezterm.lua index 4881b99..c60845e 100644 --- a/.config/wezterm/wezterm.lua +++ b/files/config/wezterm/wezterm.lua @@ -85,10 +85,18 @@ wezterm.on("tab-8", activate_tab("t8", 7)) wezterm.on("tab-9", activate_tab("t9", 8)) wezterm.on("tab-10", activate_tab("t10", 9)) -wezterm.on("user-var-changed", function(window, pane, name, _) +wezterm.on("user-var-changed", function(window, pane, name, value) if name == "nvim_activate" then activate_nvim(window, pane) end + if name == "open_url" then + local url = string.match(value, "%S+") + local u = wezterm.url.parse(string.match(value, "%S+")) + if u.scheme == "https" or u.scheme == "http" then + wezterm.log_info(url) + wezterm.background_child_process({ "xdg-open", url }) + end + end end) -- ------------------------------------------------------------------------------------ @@ -140,22 +148,25 @@ local berkeley_mono_features = { -- #[ ## ### #### ################ -config.font = wezterm.font({ - family = "Berkeley Mono Nerd Font", - weight = "Regular", - harfbuzz_features = berkeley_mono_features, +config.font = wezterm.font_with_fallback({ + { + family = "BerkeleyMono Nerd Font", + -- family = "Ubuntu Mono", + -- weight = "Regular", + harfbuzz_features = berkeley_mono_features, + }, + "Noto Sans Mono", + "Noto Color Emoji", }) + config.font_rules = { { italic = true, intensity = "Bold", reverse = false, - -- font = wezterm.font("Iosevka Term SS15 Lt Ex Obl", { weight = "Light", italic = true }), - -- font = wezterm.font("Iosevka Term Curly Slab Lt Ex", { weight = "Light", italic = true }), - -- font = wezterm.font("Iosevka Term Curly Slab Ex", { weight = "Light", italic = true }), - -- font = wezterm.font("Monaspace Radon Var", { weight = "Regular", italic = false }), font = wezterm.font({ - family = "Berkeley Mono Nerd Font", + family = "BerkeleyMono Nerd Font", + -- family = "Monaspace Radon Light", italic = true, harfbuzz_features = berkeley_mono_features, }), @@ -189,6 +200,7 @@ config.allow_square_glyphs_to_overflow_width = "Always" -- Config config.enable_wayland = true +config.xcursor_theme = "Adwaita" config.check_for_updates = false -- UI @@ -251,6 +263,8 @@ config.disable_default_key_bindings = true config.keys = { { key = "c", mods = "ALT|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") }, { key = "v", mods = "ALT|SHIFT", action = act.PasteFrom("Clipboard") }, + { key = "c", mods = "CTRL|SHIFT", action = act.CopyTo("ClipboardAndPrimarySelection") }, + { key = "v", mods = "CTRL|SHIFT", action = act.PasteFrom("Clipboard") }, { key = "0", mods = "CTRL", action = "ResetFontSize" }, { key = "-", mods = "CTRL", action = "DecreaseFontSize" }, { key = "=", mods = "CTRL", action = "IncreaseFontSize" }, diff --git a/files/scripts/git-signing-key b/files/scripts/git-signing-key new file mode 100755 index 0000000..9c49d31 --- /dev/null +++ b/files/scripts/git-signing-key @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +ssh-add -L | awk '/^sk-ssh-/ { print "key::" $1 " " $2 }' diff --git a/bin/test-term.sh b/files/scripts/test-term.sh similarity index 96% rename from bin/test-term.sh rename to files/scripts/test-term.sh index 91ae7e2..a19fceb 100755 --- a/bin/test-term.sh +++ b/files/scripts/test-term.sh @@ -57,6 +57,10 @@ echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly u echo echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷 ❤️ " +echo +echo "Nerdfonts:    󱓼 󱓺 󱓻            󱠇 󰲬  󰍎  󰬟  " +echo "   󱄅 󰣇       " + echo echo "Geometrical:" echo -e '◆ ◇ ◈ ● ○ ◉ ◎ ◍ ◌' diff --git a/files/scripts/wezterm-open-url b/files/scripts/wezterm-open-url new file mode 100755 index 0000000..8cb656f --- /dev/null +++ b/files/scripts/wezterm-open-url @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +if [[ $1 == http* ]]; then + printf "\033]1337;SetUserVar=open_url=%s\007" "$(echo -n "$1" | base64)" +fi diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..09d6f23 --- /dev/null +++ b/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722462338, + "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1722421184, + "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..2ea8237 --- /dev/null +++ b/flake.nix @@ -0,0 +1,72 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + home-manager.url = "github:nix-community/home-manager"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = + { + self, + nixpkgs, + home-manager, + ... + }@inputs: + let + inherit (self) outputs; + + mkHome = + modules: + home-manager.lib.homeManagerConfiguration { + modules = [ ./common ] ++ modules; + pkgs = nixpkgs.legacyPackages.x86_64-linux; + extraSpecialArgs = { + inherit inputs outputs; + }; + }; + + supportedSystems = [ + "x86_64-linux" + "aarch64-linux" + ]; + + forEachSystem = + f: + builtins.listToAttrs ( + map (system: { + name = system; + value = f system; + }) supportedSystems + ); + systemBits = forEachSystem (system: rec { + inherit system; + pkgs = import nixpkgs { + localSystem = system; + overlays = [ ]; + }; + }); + + forEachSystem' = f: forEachSystem (system: (f systemBits.${system})); + inherit (nixpkgs) lib; + in + { + overlays = import ./overlays { inherit inputs outputs; }; + + devShells = forEachSystem' ( + { system, pkgs, ... }: + { + default = pkgs.mkShell { packages = [ pkgs.just ]; }; + } + ); + + homeConfigurations = { + "dln@dinky" = mkHome [ ./users/dln/dinky.nix ]; + "dln@nemo" = mkHome [ ./users/dln/nemo.nix ]; + "lsjostro@nemo" = mkHome [ ./users/lsjostro/nemo.nix ]; + }; + + }; +} diff --git a/justfile b/justfile new file mode 100644 index 0000000..73fe5fa --- /dev/null +++ b/justfile @@ -0,0 +1,17 @@ +set shell := ["/usr/bin/env", "bash", "-euo", "pipefail", "-c"] + +[private] +default: + @just --list + +clean: + nh clean all + +build: + nh home build . + +switch: + nh home switch . + +update: + nh home switch --update --ask . diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..1ab8f99 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,21 @@ +{ inputs, ... }: +{ + + additions = final: _prev: import ../pkgs final.pkgs; + + modifications = final: prev: { + + # https://discourse.nixos.org/t/disable-ssh-agent-from-gnome-keyring-on-gnome/28176/5 + gnome-keyring = prev.gnome-keyring.overrideAttrs (oldAttrs: { + configureFlags = oldAttrs.configureFlags or [ ] ++ [ "--disable-ssh-agent" ]; + }); + + }; + + unstable-packages = final: _prev: { + unstable = import inputs.nixpkgs-unstable { + system = final.system; + config.allowUnfree = true; + }; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..ab3485b --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,5 @@ +pkgs: { + gnome-ssh-askpass4 = pkgs.callPackage ./gnome-ssh-askpass4 { }; + jujutsu-openssh = pkgs.callPackage ./jujutsu-openssh { }; + lazyjj = pkgs.callPackage ./lazyjj { }; +} diff --git a/pkgs/gnome-ssh-askpass4/default.nix b/pkgs/gnome-ssh-askpass4/default.nix new file mode 100644 index 0000000..7247a0f --- /dev/null +++ b/pkgs/gnome-ssh-askpass4/default.nix @@ -0,0 +1,48 @@ +{ + lib, + stdenv, + fetchFromGitHub, + gcr_4, + glib, + gtk4, + pkg-config, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "gnome-ssh-askpass4"; + version = "0.0.0"; + + src = fetchFromGitHub { + name = "openssh"; + owner = "openssh"; + repo = "openssh-portable"; + rev = "5b0d9e3ed8fd407936d973990ae169cc296150f7"; + hash = "sha256-QJilKQ6weWZuf3L8yUplXwjqlzH5Ki7YeDnCh4HSuIQ="; + }; + + sourceRoot = "openssh/contrib"; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + gcr_4 + glib + gtk4 + ]; + + strictDeps = true; + + buildPhase = ''make gnome-ssh-askpass4''; + + installPhase = ''install -Dm 755 gnome-ssh-askpass4 $out/bin/gnome-ssh-askpass4''; + + meta = with lib; { + description = "A simple SSH passphrase grabber for GNOME"; + homepage = "https://github.com/openssh/openssh-portable"; + license = licenses.bsd2; + maintainers = with maintainers; [ ]; + mainProgram = "gnome-ssh-askpass4"; + }; +}) diff --git a/pkgs/jujutsu-openssh/Cargo.lock b/pkgs/jujutsu-openssh/Cargo.lock new file mode 100644 index 0000000..b2483de --- /dev/null +++ b/pkgs/jujutsu-openssh/Cargo.lock @@ -0,0 +1,3877 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstream" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" + +[[package]] +name = "anstyle-parse" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "assert_cmd" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "predicates", + "predicates-core", + "predicates-tree", + "wait-timeout", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "getrandom", + "instant", + "rand", +] + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bstr" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +dependencies = [ + "memchr", + "regex-automata 0.4.7", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cassowary" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "castaway" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +dependencies = [ + "rustversion", +] + +[[package]] +name = "cc" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.5", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "4.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap-markdown" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ebc67e6266e14f8b31541c2f204724fa2ac7ad5c17d6f5908fbb92a60f42cff" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_builder" +version = "4.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", +] + +[[package]] +name = "clap_complete" +version = "4.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d598e88f6874d4b888ed40c71efbcbf4076f1dfbae128a08a8c9e45f710605d" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_complete_nushell" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1accf1b463dee0d3ab2be72591dccdab8bef314958340447c882c4c72acfe2a3" +dependencies = [ + "clap", + "clap_complete", +] + +[[package]] +name = "clap_derive" +version = "4.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" + +[[package]] +name = "clap_mangen" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74b70fc13e60c0e1d490dc50eb73a749be6d81f4ef03783df1d9b7b0c62bc937" +dependencies = [ + "clap", + "roff", +] + +[[package]] +name = "clru" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" + +[[package]] +name = "colorchoice" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" + +[[package]] +name = "compact_str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "ryu", + "static_assertions", +] + +[[package]] +name = "config" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" +dependencies = [ + "async-trait", + "lazy_static", + "nom", + "pathdiff", + "serde", + "toml", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crossterm" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +dependencies = [ + "bitflags 2.5.0", + "crossterm_winapi", + "libc", + "mio", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "esl01-renderdag" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1840969ab8be31e186bb6d2f672d586dcd203dd4019a80dc1277a14686eca9" +dependencies = [ + "bitflags 1.3.2", + "itertools 0.10.5", +] + +[[package]] +name = "faster-hex" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures 0.1.31", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gen-protos" +version = "0.19.0" +dependencies = [ + "prost-build", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "git2" +version = "0.18.3" +source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751" +dependencies = [ + "bitflags 2.5.0", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "gix" +version = "0.63.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "984c5018adfa7a4536ade67990b3ebc6e11ab57b3d6cd9968de0947ca99b4b06" +dependencies = [ + "gix-actor", + "gix-attributes", + "gix-command", + "gix-commitgraph", + "gix-config", + "gix-date", + "gix-diff", + "gix-discover", + "gix-features", + "gix-filter", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-ignore", + "gix-index", + "gix-lock", + "gix-macros", + "gix-object", + "gix-odb", + "gix-pack", + "gix-path", + "gix-pathspec", + "gix-ref", + "gix-refspec", + "gix-revision", + "gix-revwalk", + "gix-sec", + "gix-submodule", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-url", + "gix-utils", + "gix-validate", + "gix-worktree", + "once_cell", + "parking_lot", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-actor" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b8ee65074b2bbb91d9d97c15d172ea75043aefebf9869b5b329149dc76501c" +dependencies = [ + "bstr", + "gix-date", + "gix-utils", + "itoa", + "thiserror", + "winnow 0.6.13", +] + +[[package]] +name = "gix-attributes" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eefb48f42eac136a4a0023f49a54ec31be1c7a9589ed762c45dcb9b953f7ecc8" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-quote", + "gix-trace", + "kstring", + "smallvec", + "thiserror", + "unicode-bom", +] + +[[package]] +name = "gix-bitmap" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a371db66cbd4e13f0ed9dc4c0fea712d7276805fccc877f77e96374d317e87ae" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-chunk" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45c8751169961ba7640b513c3b24af61aa962c967aaf04116734975cd5af0c52" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-command" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c22e086314095c43ffe5cdc5c0922d5439da4fd726f3b0438c56147c34dc225" +dependencies = [ + "bstr", + "gix-path", + "gix-trace", + "shell-words", +] + +[[package]] +name = "gix-commitgraph" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b102311085da4af18823413b5176d7c500fb2272eaf391cfa8635d8bcb12c4" +dependencies = [ + "bstr", + "gix-chunk", + "gix-features", + "gix-hash", + "memmap2", + "thiserror", +] + +[[package]] +name = "gix-config" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fafe42957e11d98e354a66b6bd70aeea00faf2f62dd11164188224a507c840" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "memchr", + "once_cell", + "smallvec", + "thiserror", + "unicode-bom", + "winnow 0.6.13", +] + +[[package]] +name = "gix-config-value" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbd06203b1a9b33a78c88252a625031b094d9e1b647260070c25b09910c0a804" +dependencies = [ + "bitflags 2.5.0", + "bstr", + "gix-path", + "libc", + "thiserror", +] + +[[package]] +name = "gix-date" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367ee9093b0c2b04fd04c5c7c8b6a1082713534eab537597ae343663a518fa99" +dependencies = [ + "bstr", + "itoa", + "thiserror", + "time", +] + +[[package]] +name = "gix-diff" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9bd8b2d07b6675a840b56a6c177d322d45fa082672b0dad8f063b25baf0a4" +dependencies = [ + "bstr", + "gix-command", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-trace", + "gix-worktree", + "imara-diff", + "thiserror", +] + +[[package]] +name = "gix-discover" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc27c699b63da66b50d50c00668bc0b7e90c3a382ef302865e891559935f3dbf" +dependencies = [ + "bstr", + "dunce", + "gix-fs", + "gix-hash", + "gix-path", + "gix-ref", + "gix-sec", + "thiserror", +] + +[[package]] +name = "gix-features" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" +dependencies = [ + "crc32fast", + "crossbeam-channel", + "flate2", + "gix-hash", + "gix-trace", + "gix-utils", + "jwalk", + "libc", + "once_cell", + "parking_lot", + "prodash", + "sha1_smol", + "thiserror", + "walkdir", +] + +[[package]] +name = "gix-filter" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00ce6ea5ac8fca7adbc63c48a1b9e0492c222c386aa15f513405f1003f2f4ab2" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes", + "gix-command", + "gix-hash", + "gix-object", + "gix-packetline-blocking", + "gix-path", + "gix-quote", + "gix-trace", + "gix-utils", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-fs" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3338ff92a2164f5209f185ec0cd316f571a72676bb01d27e22f2867ba69f77a" +dependencies = [ + "fastrand", + "gix-features", + "gix-utils", +] + +[[package]] +name = "gix-glob" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a29ad0990cf02c48a7aac76ed0dbddeb5a0d070034b83675cc3bbf937eace4" +dependencies = [ + "bitflags 2.5.0", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" +dependencies = [ + "faster-hex", + "thiserror", +] + +[[package]] +name = "gix-hashtable" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242" +dependencies = [ + "gix-hash", + "hashbrown 0.14.5", + "parking_lot", +] + +[[package]] +name = "gix-ignore" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "640dbeb4f5829f9fc14d31f654a34a0350e43a24e32d551ad130d99bf01f63f1" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-trace", + "unicode-bom", +] + +[[package]] +name = "gix-index" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d8c5a5f1c58edcbc5692b174cda2703aba82ed17d7176ff4c1752eb48b1b167" +dependencies = [ + "bitflags 2.5.0", + "bstr", + "filetime", + "fnv", + "gix-bitmap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", + "gix-utils", + "gix-validate", + "hashbrown 0.14.5", + "itoa", + "libc", + "memmap2", + "rustix", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-lock" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-macros" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "999ce923619f88194171a67fb3e6d613653b8d4d6078b529b15a765da0edcc17" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gix-object" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fe2dc4a41191c680c942e6ebd630c8107005983c4679214fdb1007dcf5ae1df" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-utils", + "gix-validate", + "itoa", + "smallvec", + "thiserror", + "winnow 0.6.13", +] + +[[package]] +name = "gix-odb" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e92b9790e2c919166865d0825b26cc440a387c175bed1b43a2fa99c0e9d45e98" +dependencies = [ + "arc-swap", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-object", + "gix-pack", + "gix-path", + "gix-quote", + "parking_lot", + "tempfile", + "thiserror", +] + +[[package]] +name = "gix-pack" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8da51212dbff944713edb2141ed7e002eea326b8992070374ce13a6cb610b3" +dependencies = [ + "clru", + "gix-chunk", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-path", + "gix-tempfile", + "memmap2", + "parking_lot", + "smallvec", + "thiserror", + "uluru", +] + +[[package]] +name = "gix-packetline-blocking" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31d42378a3d284732e4d589979930d0d253360eccf7ec7a80332e5ccb77e14a" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace", + "thiserror", +] + +[[package]] +name = "gix-path" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23623cf0f475691a6d943f898c4d0b89f5c1a2a64d0f92bce0e0322ee6528783" +dependencies = [ + "bstr", + "gix-trace", + "home", + "once_cell", + "thiserror", +] + +[[package]] +name = "gix-pathspec" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76cab098dc10ba2d89f634f66bf196dea4d7db4bf10b75c7a9c201c55a2ee19" +dependencies = [ + "bitflags 2.5.0", + "bstr", + "gix-attributes", + "gix-config-value", + "gix-glob", + "gix-path", + "thiserror", +] + +[[package]] +name = "gix-quote" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbff4f9b9ea3fa7a25a70ee62f545143abef624ac6aa5884344e70c8b0a1d9ff" +dependencies = [ + "bstr", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-ref" +version = "0.44.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e" +dependencies = [ + "gix-actor", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-utils", + "gix-validate", + "memmap2", + "thiserror", + "winnow 0.6.13", +] + +[[package]] +name = "gix-refspec" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde848865834a54fe4d9b4573f15d0e9a68eaf3d061b42d3ed52b4b8acf880b2" +dependencies = [ + "bstr", + "gix-hash", + "gix-revision", + "gix-validate", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-revision" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e08f8107ed1f93a83bcfbb4c38084c7cb3f6cd849793f1d5eec235f9b13b2b" +dependencies = [ + "bstr", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "gix-trace", + "thiserror", +] + +[[package]] +name = "gix-revwalk" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4181db9cfcd6d1d0fd258e91569dbb61f94cb788b441b5294dd7f1167a3e788f" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-sec" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fddc27984a643b20dd03e97790555804f98cf07404e0e552c0ad8133266a79a1" +dependencies = [ + "bitflags 2.5.0", + "gix-path", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "gix-submodule" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "921cd49924ac14b6611b22e5fb7bbba74d8780dc7ad26153304b64d1272460ac" +dependencies = [ + "bstr", + "gix-config", + "gix-path", + "gix-pathspec", + "gix-refspec", + "gix-url", + "thiserror", +] + +[[package]] +name = "gix-tempfile" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b0e276cd08eb2a22e9f286a4f13a222a01be2defafa8621367515375644b99" +dependencies = [ + "dashmap", + "gix-fs", + "libc", + "once_cell", + "parking_lot", + "tempfile", +] + +[[package]] +name = "gix-trace" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e" + +[[package]] +name = "gix-traverse" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f20cb69b63eb3e4827939f42c05b7756e3488ef49c25c412a876691d568ee2a0" +dependencies = [ + "bitflags 2.5.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-url" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0db829ebdca6180fbe32be7aed393591df6db4a72dbbc0b8369162390954d1cf" +dependencies = [ + "bstr", + "gix-features", + "gix-path", + "home", + "thiserror", + "url", +] + +[[package]] +name = "gix-utils" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc" +dependencies = [ + "fastrand", + "unicode-normalization", +] + +[[package]] +name = "gix-validate" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf" +dependencies = [ + "bstr", + "thiserror", +] + +[[package]] +name = "gix-worktree" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53f6b7de83839274022aff92157d7505f23debf739d257984a300a35972ca94e" +dependencies = [ + "bstr", + "gix-attributes", + "gix-features", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", + "gix-validate", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.7", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "imara-diff" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e98c1d0ad70fc91b8b9654b1f33db55e59579d3b3de2bffdced0fdb810570cb8" +dependencies = [ + "ahash", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", +] + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "insta" +version = "1.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" +dependencies = [ + "console", + "lazy_static", + "linked-hash-map", + "regex", + "similar", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jj-cli" +version = "0.19.0" +dependencies = [ + "anyhow", + "assert_cmd", + "assert_matches", + "async-trait", + "cargo_metadata", + "chrono", + "clap", + "clap-markdown", + "clap_complete", + "clap_complete_nushell", + "clap_mangen", + "config", + "criterion", + "crossterm", + "dirs", + "dunce", + "esl01-renderdag", + "futures 0.3.30", + "git2", + "gix", + "gix-filter", + "hex", + "indexmap", + "indoc", + "insta", + "itertools 0.12.1", + "jj-cli", + "jj-lib", + "libc", + "maplit", + "minus", + "once_cell", + "pest", + "pest_derive", + "pollster", + "rayon", + "regex", + "rpassword", + "scm-record", + "serde", + "slab", + "strsim", + "tempfile", + "test-case", + "testutils", + "textwrap", + "thiserror", + "timeago", + "toml_edit", + "tracing", + "tracing-chrome", + "tracing-subscriber", + "unicode-width", +] + +[[package]] +name = "jj-lib" +version = "0.19.0" +dependencies = [ + "assert_matches", + "async-trait", + "backoff", + "blake2", + "bytes", + "chrono", + "config", + "criterion", + "digest", + "either", + "esl01-renderdag", + "futures 0.3.30", + "git2", + "gix", + "gix-filter", + "glob", + "hex", + "ignore", + "indoc", + "insta", + "itertools 0.12.1", + "jj-lib-proc-macros", + "maplit", + "num_cpus", + "once_cell", + "pest", + "pest_derive", + "pollster", + "pretty_assertions", + "prost", + "rand", + "rand_chacha", + "rayon", + "ref-cast", + "regex", + "rustix", + "serde", + "serde_json", + "smallvec", + "strsim", + "tempfile", + "test-case", + "testutils", + "thiserror", + "tokio", + "tracing", + "version_check", + "watchman_client", + "whoami", + "winreg", + "zstd", +] + +[[package]] +name = "jj-lib-proc-macros" +version = "0.19.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56" +dependencies = [ + "crossbeam", + "rayon", +] + +[[package]] +name = "kstring" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "git+https://github.com/bnjmnt4n/git2-rs.git?rev=8fd23a45f#8fd23a45f4166d4e87debc02d9ba70ef601fe751" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "lru" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "minus" +version = "5.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093bd0520d2a37943566a73750e6d44094dac75d66a978d1f0d97ffc78686832" +dependencies = [ + "crossbeam-channel", + "crossterm", + "once_cell", + "parking_lot", + "regex", + "textwrap", + "thiserror", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "multimap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +dependencies = [ + "parking_lot_core", +] + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "300.3.1+3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.2", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plotters" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" + +[[package]] +name = "plotters-svg" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "pollster" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "predicates" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +dependencies = [ + "anstyle", + "difflib", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prodash" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" +dependencies = [ + "bytes", + "heck", + "itertools 0.12.1", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "ratatui" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" +dependencies = [ + "bitflags 2.5.0", + "cassowary", + "compact_str", + "crossterm", + "itertools 0.12.1", + "lru", + "paste", + "stability", + "strum", + "unicode-segmentation", + "unicode-truncate", + "unicode-width", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "regex" +version = "1.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "roff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316" + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scm-record" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1bf431016c7a34038f440696c672f0fee1a15d6aea31fe100df6974a35bf5f" +dependencies = [ + "cassowary", + "crossterm", + "num-traits", + "ratatui", + "serde", + "serde_json", + "thiserror", + "tracing", + "unicode-width", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bser" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56b4bcc15e42e5b5ae16c6f75582bef80d36c6ffe2c03b1b5317754b38f8717" +dependencies = [ + "anyhow", + "byteorder", + "bytes", + "serde", + "serde_bytes", + "thiserror", +] + +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "similar" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stability" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "terminal_size" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +dependencies = [ + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "test-case-core", +] + +[[package]] +name = "testutils" +version = "0.19.0" +dependencies = [ + "async-trait", + "config", + "futures 0.3.30", + "git2", + "hex", + "itertools 0.12.1", + "jj-lib", + "rand", + "tempfile", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "timeago" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1710e589de0a76aaf295cd47a6699f6405737dbfd3cf2b75c92d000b548d0e6" + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-chrome" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724" +dependencies = [ + "serde_json", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uluru" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-bom" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-truncate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226" +dependencies = [ + "itertools 0.12.1", + "unicode-width", +] + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "watchman_client" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bc4c9bb443a7aae10d4fa7807bffc397805315e2305288c90c80e2f66cfb52" +dependencies = [ + "anyhow", + "bytes", + "futures 0.3.30", + "maplit", + "serde", + "serde_bser", + "thiserror", + "tokio", + "tokio-util", + "winapi", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +dependencies = [ + "redox_syscall 0.4.1", + "wasite", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.11+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/pkgs/jujutsu-openssh/default.nix b/pkgs/jujutsu-openssh/default.nix new file mode 100644 index 0000000..a5cee1e --- /dev/null +++ b/pkgs/jujutsu-openssh/default.nix @@ -0,0 +1,90 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + pkg-config, + openssl, + gzip, + libgit2, + openssh, + zstd, + installShellFiles, + nix-update-script, + testers, + jujutsu-openssh, +}: + +rustPlatform.buildRustPackage rec { + pname = "jujutsu-openssh"; + version = "0.19.0+pr3191.openssh"; + + src = fetchFromGitHub { + owner = "martinvonz"; + repo = "jj"; + rev = "f97577cf3f8da3f8cba40bb908a21d5b932cf68f"; # https://github.com/martinvonz/jj/pull/3191/commits + hash = "sha256-njRXH1JGBflIPU8nWPawjVEbqXm+zCITjI7EIcpVt84="; + }; + + # cargoHash = ""; + cargoLock.lockFile = ./Cargo.lock; + cargoLock.outputHashes = { + "git2-0.18.3" = "sha256-3g7ajPfLfuPWh46rIa70wQRWLZ+jZXBApkyPlJULi/I="; + }; + + cargoBuildFlags = [ + "--bin" + "jj" + ]; # don't install the fake editors + useNextest = false; # nextest is the upstream integration framework, but is problematic for test skipping + ZSTD_SYS_USE_PKG_CONFIG = "1"; # disable vendored zlib + + nativeBuildInputs = [ + gzip + installShellFiles + pkg-config + ]; + + buildInputs = [ + openssl + zstd + libgit2 + openssh + ]; + + postInstall = '' + $out/bin/jj util mangen > ./jj.1 + installManPage ./jj.1 + + installShellCompletion --cmd jj \ + --bash <($out/bin/jj util completion bash) \ + --fish <($out/bin/jj util completion fish) \ + --zsh <($out/bin/jj util completion zsh) + ''; + + checkFlags = [ + # signing tests spin up an ssh-agent and do git checkouts + "--skip=test_ssh_signing" + ]; + + passthru = { + updateScript = nix-update-script { }; + tests = { + version = testers.testVersion { + package = jujutsu-openssh; + command = "jj --version"; + }; + }; + }; + + meta = with lib; { + description = "Git-compatible DVCS that is both simple and powerful"; + homepage = "https://github.com/martinvonz/jj"; + changelog = "https://github.com/martinvonz/jj/blob/v${version}/CHANGELOG.md"; + license = licenses.asl20; + maintainers = with maintainers; [ + _0x4A6F + thoughtpolice + ]; + mainProgram = "jj"; + }; +} diff --git a/pkgs/lazyjj/default.nix b/pkgs/lazyjj/default.nix new file mode 100644 index 0000000..cf68629 --- /dev/null +++ b/pkgs/lazyjj/default.nix @@ -0,0 +1,29 @@ +{ + stdenvNoCC, + fetchzip, +}: let + version = "0.2.1"; +in + stdenvNoCC.mkDerivation { + name = "lazyjj"; + inherit version; + + src = fetchzip { + url = "https://github.com/Cretezy/lazyjj/releases/download/v0.2.1/lazyjj-v0.2.1-x86_64-unknown-linux-musl.tar.gz"; + hash = "sha256-yMfGWuzsl94elFxRvGaLA61KBopBnBT3j5pxbCrKl0w="; + }; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + install -m755 -D $src/lazyjj $out/bin/lazyjj + runHook postInstall + ''; + + meta = { + homepage = "https://github.com/Cretezy/lazyjj"; + description = "TUI for jj"; + mainProgram = "lazyjj"; + platforms = ["x86_64-linux"]; + }; + } diff --git a/users/dln/desktop.nix b/users/dln/desktop.nix new file mode 100644 index 0000000..7b80912 --- /dev/null +++ b/users/dln/desktop.nix @@ -0,0 +1,67 @@ +{ pkgs, ... }: +{ + shelman = { + desktop.enable = true; + }; + + home.packages = with pkgs; [ + audacity + bitwig-studio + dynamic-wallpaper + gimp-with-plugins + helvum + inkscape + moonlight-qt + obsidian + pavucontrol + plexamp + reaper + signal-desktop + ]; + + xdg.desktopEntries = { + firefox-work = { + categories = [ + "Network" + "WebBrowser" + ]; + comment = "Browse the Web"; + exec = "firefox %u -P work --new-instance --name firefox-work"; + genericName = "Web Browser"; + icon = "firefox"; + mimeType = [ + "text/html" + "text/xml" + "application/xhtml+xml" + "application/vnd.mozilla.xul+xml" + "text/mml" + "x-scheme-handler/http" + "x-scheme-handler/https" + ]; + name = "Firefox (Work)"; + settings = { + StartupWMClass = "firefox-work"; + Keywords = "web;browser;internet"; + }; + terminal = false; + type = "Application"; + }; + + wezterm-nemo = { + categories = [ + "System" + "TerminalEmulator" + ]; + exec = "wezterm start --class=org.wezfurlong.wezterm-nemo --domain=nemo"; + genericName = "wezterm-nemo"; + icon = "org.wezfurlong.wezterm"; + name = "wezterm-nemo"; + settings = { + StartupWMClass = "org.wezfurlong.wezterm-nemo"; + TryExec = "wezterm"; + }; + terminal = false; + type = "Application"; + }; + }; +} diff --git a/users/dln/dinky.nix b/users/dln/dinky.nix new file mode 100644 index 0000000..c31bbae --- /dev/null +++ b/users/dln/dinky.nix @@ -0,0 +1,14 @@ +{ ... }: +{ + imports = [ + ./home.nix + ./desktop.nix + ]; + + dconf.settings = { + "org/gnome/shell" = { + enabled-extensions = [ "Battery-Health-Charging@maniacx.github.com" ]; + }; + }; + +} diff --git a/users/dln/home.nix b/users/dln/home.nix new file mode 100644 index 0000000..495944b --- /dev/null +++ b/users/dln/home.nix @@ -0,0 +1,140 @@ +{ pkgs, ... }: +let + realName = "Daniel Lundin"; + email = "dln@arity.se"; +in +{ + home = { + username = "dln"; + homeDirectory = "/home/dln"; + packages = with pkgs; [ + openconnect + ouch + ]; + }; + + programs.atuin.settings = { + cwd_filter = [ + "^~/media" + "^/home/dln/media" + ]; + }; + + programs.git = { + userName = realName; + userEmail = email; + }; + + programs.jujutsu = { + settings = { + user = { + email = email; + name = realName; + }; + + signing = { + sign-all = true; + backend = "ssh"; + backends.ssh.allowed-signers = "/home/dln/.ssh/authorized_keys"; + key = "/home/dln/.ssh/git_signing_key.pub"; + }; + + ui = { + "default-command" = [ + "log" + "--limit=20" + "--template=builtin_log_comfortable" + ]; + + pager = "bat"; + }; + + "merge-tools" = { + difft."diff-args" = [ + "--color=always" + "$left" + "$right" + ]; + }; + + aliases = { + l = [ + "log" + "-T" + "builtin_log_comfortable" + "-r" + "(main..@) | (main..@)-" + ]; + la = [ + "log" + "-T" + "builtin_log_oneline" + "-r" + "all()" + ]; + b = [ + "branch" + "list" + ]; + n = [ + "new" + "main" + ]; + d = [ "diff" ]; + s = [ "show" ]; + sh = [ + "show" + "--tool=difft" + ]; + }; + + "revset-aliases" = { + # Prevent rewriting commits on main@origin and commits authored by other users; + "immutable_heads()" = "main@origin | (main@origin.. & ~mine())"; + "user(x)" = "author(x) | committer(x)"; + "trunk()" = "latest((present(main) | present(master)) & remote_branches())"; + "open" = "(mine() ~ ::trunk()) ~ heads(empty())"; + "wip" = ''description("wip: ")''; + "ready" = "open() ~ (wip::)"; + }; + + colors = { + "commit_id prefix" = { + bold = true; + }; + "diff token" = { + underline = false; + }; + }; + }; + }; + + programs.ssh.matchBlocks = { + dev = { + hostname = "10.1.100.16"; + }; + + nemo = { + hostname = "10.1.100.20"; + forwardAgent = true; + localForwards = [ + { + bind.address = "localhost"; + bind.port = 8000; + host.address = "localhost"; + host.port = 8000; + } + { + bind.address = "localhost"; + bind.port = 8080; + host.address = "localhost"; + host.port = 8080; + } + ]; + }; + }; + + services.syncthing.enable = true; + + home.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion +} diff --git a/users/dln/nemo.nix b/users/dln/nemo.nix new file mode 100644 index 0000000..49687bb --- /dev/null +++ b/users/dln/nemo.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./home.nix + ./desktop.nix + ]; + + # Host specific user config goes here +} diff --git a/users/lsjostro/home.nix b/users/lsjostro/home.nix new file mode 100644 index 0000000..f1d8a4d --- /dev/null +++ b/users/lsjostro/home.nix @@ -0,0 +1,40 @@ +{ pkgs, ... }: +{ + home = { + username = "lsjostro"; + homeDirectory = "/home/lsjostro"; + packages = with pkgs; [ openconnect ]; + }; + + programs.git = { + userName = "Lars Sjöstrom"; + userEmail = "lars@radicore.se"; + }; + + programs.ssh.matchBlocks = { + dev = { + hostname = "10.1.100.17"; + }; + + nemo = { + hostname = "10.1.100.20"; + forwardAgent = true; + localForwards = [ + { + bind.address = "localhost"; + bind.port = 8000; + host.address = "localhost"; + host.port = 8000; + } + { + bind.address = "localhost"; + bind.port = 8080; + host.address = "localhost"; + host.port = 8080; + } + ]; + }; + }; + + home.stateVersion = "24.05"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion +} diff --git a/users/lsjostro/nemo.nix b/users/lsjostro/nemo.nix new file mode 100644 index 0000000..0de2f39 --- /dev/null +++ b/users/lsjostro/nemo.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + imports = [ ./home.nix ]; + + # Host specific user config goes here +}