#!/usr/bin/env bash

DEST=${1:-/etc/skel}
NU_HOME=${DEST}/.config/nushell
NU_INTEGRATIONS=${NU_HOME}/integrations

URI="apt.fury.io/nushell"
KEY_DIR="/usr/share/keyrings"
wget -qO- https://${URI}/gpg.key | sudo gpg --dearmor -o ${KEY_DIR}/fury-nushell.gpg

# echo "deb [signed-by=/etc/apt/keyrings/fury-nushell.gpg] https://apt.fury.io/nushell/ /" | sudo tee /etc/apt/sources.list.d/fury-nushell.list
mkdir -p ${NU_INTEGRATIONS}

conf_print_nushell_sources() {
  cat <<EOF
Types: deb
URIs: https://${URI}/
Suites: /
Components: 
Signed-By: ${KEY_DIR}/fury-nushell.gpg
EOF
}
conf_print_nushell_sources | sudo tee /etc/apt/sources.list-available/nushell.sources
sudo ln -sf /etc/apt/sources.list-available/nushell.sources /etc/apt/sources.list.d/nushell.sources

sudo apt update -qq
sudo apt install nushell zoxide starship

conf_print_nushell_config() {
  cat <<'EOF'
# config.nu
#
# Installed by:
# version = "0.110.0"
#
# This file is used to override default Nushell settings, define
# (or import) custom commands, or run any other startup tasks.
# See https://www.nushell.sh/book/configuration.html
#
# Nushell sets "sensible defaults" for most configuration settings, 
# so your $(config.nu) only needs to override these defaults if desired.
#
# You can open this file in your default editor using:
#     config nu
#
# You can also pretty-print and page through the documentation for configuration
# options using:
#     config nu --doc | nu-highlight | less -R
     
# Set $(config nu) behavior
$env.config.buffer_editor = "nvim"

# Toggle $(Welcome message) display
$env.config.show_banner = false


# ============================================================================
# Custom Configurations
# ============================================================================

source integrations.nu
# source aliases_defaults.nu
# source aliases_docker.nu
# source aliases_git.nu
# source navigation.nu

EOF
}
#[[ ! -f ${DEST}/.config/nushell/config.nu ]] &&
conf_print_nushell_config | tee ${DEST}/.config/nushell/config.nu

conf_print_nushell_integrations() {
  cat <<'EOF'
# Starship prompt (https://starship.rs)
source ($nu.default-config-dir | path join "integrations/starship.nu")

# zoxide - smarter cd command (https://github.com/ajeetdsouza/zoxide)
source ($nu.default-config-dir | path join "integrations/zoxide.nu")

# mise - dev tools version manager (https://mise.jdx.dev)
source ($nu.default-config-dir | path join "integrations/mise.nu")
EOF
}
# [[ ! -f ${DEST}/.config/nushell/integrations.nu ]] &&
conf_print_nushell_integrations | tee ${DEST}/.config/nushell/integrations.nu

# Generate integrations
# = starship.nu  → Generated via
if command -v starship &>/dev/null; then
  starship init nu >"${NU_INTEGRATIONS}/starship.nu"
else
  echo "starship not found. Skipping integration."
fi

# - zoxide.nu    → Generated via
# zoxide init nushell | save -f ($nu.default-config-dir | path join "integrations/zoxide.nu");
if command -v zoxide &>/dev/null; then
  starship init nu >"${NU_INTEGRATIONS}/zoxide.nu"
else
  echo "zoxide not found. Skipping integration."
fi

# - mise.nu      → Generated via
# mise activate nu | save -f ($nu.default-config-dir | path join "integrations/mise.nu");
if command -v mise &>/dev/null; then
  mise activate nu >"${NU_INTEGRATIONS}/mise.nu"
else
  echo "mise not found. Skipping integration."
fi

conf_print_nushell_env() {
  cat <<'EOF'
# env.nu
#
# Installed by:
# version = "0.110.0"
#
# Previously, environment variables were typically configured in $(env.nu).
# In general, most configuration can and should be performed in $(config.nu)
# or one of the autoload directories.
#
# This file is generated for backwards compatibility for now.
# It is loaded before config.nu and login.nu
#
# See https://www.nushell.sh/book/configuration.html
#
# Also see $(help config env) for more options.
#
# You can remove these comments if you want or leave
# them for future reference.
EOF
}
[[ ! -f ${DEST}/.config/nushell/env.nu ]] &&
  conf_print_nushell_env | tee ${DEST}/.config/nushell/env.nu

# Empty
conf_print_nushell_login() {
  cat <<EOF
EOF
}
[[ ! -f ${DEST}/.config/nushell/login.nu ]] &&
  conf_print_nushell_login | tee ${DEST}/.config/nushell/login.nu

# Empty
conf_print_nushell_history() {
  cat <<EOF
EOF
}
[[ ! -f ${DEST}/.config/nushell/history.txt ]] &&
  conf_print_nushell_history | tee ${DEST}/.config/nushell/history.txt

# Completions
# https://github.com/nushell/nu_scripts/tree/main/custom-completions
# https://www.nushell.sh/cookbook/external_completers.html#fish-completer/

# # These heredocs are for completeness as the above integration commands are good enough
# # :r! starship init nu
# conf_print_nushell_spaceship() {
#   cat <<'EOF'
# # this file is both a valid
# # - overlay which can be loaded with `overlay use starship.nu`
# # - module which can be used with `use starship.nu`
# # - script which can be used with `source starship.nu`
# export-env { $env.STARSHIP_SHELL = "nu"; load-env {
#     STARSHIP_SESSION_KEY: (random chars -l 16)
#     PROMPT_MULTILINE_INDICATOR: (
#         ^/usr/bin/starship prompt --continuation
#     )
#
#     # Does not play well with default character module.
#     # TODO: Also Use starship vi mode indicators?
#     PROMPT_INDICATOR: ""
#
#     PROMPT_COMMAND: {||
#         # jobs are not supported
#         (
#             ^/usr/bin/starship prompt
#                 --cmd-duration $env.CMD_DURATION_MS
#                 $"--status=($env.LAST_EXIT_CODE)"
#                 --terminal-width (term size).columns
#         )
#     }
#
#     config: ($env.config? | default {} | merge {
#         render_right_prompt_on_last_line: true
#     })
#
#     PROMPT_COMMAND_RIGHT: {||
#         (
#             ^/usr/bin/starship prompt
#                 --right
#                 --cmd-duration $env.CMD_DURATION_MS
#                 $"--status=($env.LAST_EXIT_CODE)"
#                 --terminal-width (term size).columns
#         )
#     }
# }}
# EOF
# }
# # [[ ! -f ${DEST}/.config/nushell/integrations/spaceship.nu ]] &&
# #   conf_print_nushell_spaceship | tee ${DEST}/.config/nushell/integrations/spaceship.nu

# # :r! zoxide init nushell
# conf_print_nushell_zoxide() {
#   cat <<'EOF'
# # Code generated by zoxide. DO NOT EDIT.
#
# # =============================================================================
# #
# # Hook configuration for zoxide.
# #
#
# # Initialize hook to add new entries to the database.
# export-env {
#   $env.config = (
#     $env.config?
#     | default {}
#     | upsert hooks { default {} }
#     | upsert hooks.env_change { default {} }
#     | upsert hooks.env_change.PWD { default [] }
#   )
#   let __zoxide_hooked = (
#     $env.config.hooks.env_change.PWD | any { try { get __zoxide_hook } catch { false } }
#   )
#   if not $__zoxide_hooked {
#     $env.config.hooks.env_change.PWD = ($env.config.hooks.env_change.PWD | append {
#       __zoxide_hook: true,
#       code: {|_, dir| zoxide add -- $dir}
#     })
#   }
# }
#
# # =============================================================================
# #
# # When using zoxide with --no-cmd, alias these internal functions as desired.
# #
#
# # Jump to a directory using only keywords.
# def --env --wrapped __zoxide_z [...rest: string] {
#   let path = match $rest {
#     [] => {'~'},
#     [ '-' ] => {'-'},
#     [ $arg ] if ($arg | path expand | path type) == 'dir' => {$arg}
#     _ => {
#       zoxide query --exclude $env.PWD -- ...$rest | str trim -r -c "\n"
#     }
#   }
#   cd $path
# }
#
# # Jump to a directory using interactive search.
# def --env --wrapped __zoxide_zi [...rest:string] {
#   cd $'(zoxide query --interactive -- ...$rest | str trim -r -c "\n")'
# }
#
# # =============================================================================
# #
# # Commands for zoxide. Disable these using --no-cmd.
# #
#
# alias z = __zoxide_z
# alias zi = __zoxide_zi
#
# # =============================================================================
# #
# # Add this to your env file (find it by running `$nu.env-path` in Nushell):
# #
# #   zoxide init nushell | save -f ~/.zoxide.nu
# #
# # Now, add this to the end of your config file (find it by running
# # `$nu.config-path` in Nushell):
# #
# #   source ~/.zoxide.nu
# #
# # Note: zoxide only supports Nushell v0.89.0+.
# EOF
# }
# # [[ ! -f ${DEST}/.config/nushell/integrations/zoxide.nu ]] &&
# #   conf_print_nushell_zoxide | tee ${DEST}/.config/nushell/integrations/zoxide.nu
#
# # :r! mise activate nu
# conf_print_nushell_mise() {
#   cat <<EOF
# def "parse vars" [] {
#   $in | from csv --noheaders --no-infer | rename 'op' 'name' 'value'
# }
#
# def --env "update-env" [] {
#   for $var in $in {
#     if $var.op == "set" {
#       if ($var.name | str upcase) == 'PATH' {
#         $env.PATH = ($var.value | split row (char esep))
#       } else {
#         load-env {($var.name): $var.value}
#       }
#     } else if $var.op == "hide" and $var.name in $env {
#       hide-env $var.name
#     }
#   }
# }
# export-env {
#
#   '' | parse vars | update-env
#   $env.MISE_SHELL = "nu"
#   let mise_hook = {
#     condition: { "MISE_SHELL" in $env }
#     code: { mise_hook }
#   }
#   add-hook hooks.pre_prompt $mise_hook
#   add-hook hooks.env_change.PWD $mise_hook
# }
#
# def --env add-hook [field: cell-path new_hook: any] {
#   let field = $field | split cell-path | update optional true | into cell-path
#   let old_config = $env.config? | default {}
#   let old_hooks = $old_config | get $field | default []
#   $env.config = ($old_config | upsert $field ($old_hooks ++ [$new_hook]))
# }
#
# export def --env --wrapped main [command?: string, --help, ...rest: string] {
#   let commands = ["deactivate", "shell", "sh"]
#
#   if ($command == null) {
#     ^"mise"
#   } else if ($command == "activate") {
#     $env.MISE_SHELL = "nu"
#   } else if ($command in $commands) {
#     ^"mise" $command ...$rest
#     | parse vars
#     | update-env
#   } else {
#     ^"mise" $command ...$rest
#   }
# }
#
# def --env mise_hook [] {
#   ^"mise" hook-env -s nu
#     | parse vars
#     | update-env
# }
# EOF
# }
# #[[ ! -f ${DEST}/.config/nushell/integrations/mise.nu ]] &&
# #  conf_print_nushell_mise | tee ${DEST}/.config/nushell/integrations/mise.nu

## Plugins
# We use plugin add in a nushell shell.
# nu -c "plugin add <plugin-name>"

# PLUGINS=("emoji" "inc" "polars" "gstat") # Add plugin names here
#
# for plugin in "${PLUGINS[@]}"; do
#   echo "Installing nu_plugin_$plugin..."
#   cargo install "nu_plugin_$plugin" --locked
#
#   PLUGIN_PATH="$DEST/.cargo/bin/nu_plugin_$plugin"
#   if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
#     PLUGIN_PATH="$PLUGIN_PATH.exe"
#   fi
#
#   echo "Registering $PLUGIN_PATH..."
#   nu -c "plugin add $PLUGIN_PATH"
# done

#   --all-features still tries to install native-tls breaks rustls-tls
#   Downloaded native-tls v0.2.14
# cargo install nu --no-default-features --features=extra --features=rustls-tls

# ~> TMPDIR=/var/tmp cargo install nu --all-features
#     Updating crates.io index
#   Downloaded nu v0.110.0
#   Downloaded 1 crate (1.6MiB) in 1.73s
#   Installing nu v0.110.0
#     Updating crates.io index
#      Locking 672 packages to latest compatible versions
#       Adding generic-array v0.14.7 (available: v0.14.9)
#       Adding multipart-rs v0.1.13 (available: v0.2.1)
#       Adding nix v0.30.1 (available: v0.31.1)
#       Adding rustls v0.23.28 (available: v0.23.36)
#       Adding unicode-width v0.2.0 (available: v0.2.2)
#       Adding ureq v3.0.12 (available: v3.1.4)
#   Downloaded nu-color-config v0.110.0
#   Downloaded nu-cli v0.110.0
#   Downloaded nu-cmd-base v0.110.0
#   Downloaded nu-cmd-lang v0.110.0
#   Downloaded nu-cmd-plugin v0.110.0
#   Downloaded nu-cmd-extra v0.110.0
#   downloaded nu-command v0.110.0
#   Downloaded nu-derive-value v0.110.0
#   Downloaded nu-engine v0.110.0
#   Downloaded nu-experimental v0.110.0
#   Downloaded nu-explore v0.110.0
#   Downloaded nu-glob v0.110.0
#   Downloaded nu-json v0.110.0
#   Downloaded nu-lsp v0.110.0
#   Downloaded nu-mcp v0.110.0
#   Downloaded nu-parser v0.110.0
#   Downloaded nu-path v0.110.0
#   Downloaded nu-plugin-core v0.110.0
#   Downloaded nu-plugin-engine v0.110.0
#   Downloaded nu-plugin-protocol v0.110.0
#   Downloaded nu-pretty-hex v0.110.0
#   Downloaded nu-protocol v0.110.0
#   Downloaded nu-std v0.110.0
#   Downloaded nu-system v0.110.0
#   Downloaded nu-table v0.110.0
#   Downloaded nu-term-grid v0.110.0
#   Downloaded nu-utils v0.110.0
#   Downloaded alloc-stdlib v0.2.2
#   Downloaded alloc-no-stdlib v2.0.4
#   Downloaded codepage v0.1.2
#   Downloaded buf-trait v0.4.1
#   Downloaded ctrlc v3.5.1
#   Downloaded darling_macro v0.21.3
#   Downloaded chrono-humanize v0.2.3
#   Downloaded bit-set v0.8.0
#   Downloaded downcast-rs v1.2.1
#   Downloaded dns-lookup v3.0.1
#   Downloaded linked-hash-map v0.5.6
#   Downloaded fluent-langneg v0.13.1
#   Downloaded http-body v1.0.1
#   Downloaded lsp-textdocument v0.4.2
#   Downloaded mime v0.3.17
#   Downloaded atomic-waker v1.1.2
#   Downloaded lru-slab v0.1.2
#   Downloaded human-date-parser v0.3.1
#   Downloaded gethostname v1.1.0
#   Downloaded foreign-types v0.3.2
#   Downloaded foreign-types-shared v0.1.1
#   Downloaded filesize v0.2.0
#   Downloaded fallible-streaming-iterator v0.1.9
#   Downloaded dyn-clone v1.0.20
#   Downloaded file-id v0.2.3
#   Downloaded form_urlencoded v1.2.2
#   Downloaded etcetera v0.10.0
#   Downloaded hyper-tls v0.6.0
#   Downloaded idna_adapter v1.2.1
#   Downloaded fd-lock v4.0.4
#   Downloaded doctest-file v1.0.0
#   Downloaded dunce v1.0.5
#   Downloaded arboard v3.6.1
#   Downloaded ansitok v0.3.0
#   Downloaded byteyarn v0.5.1
#   Downloaded bit-vec v0.8.0
#   Downloaded potential_utf v0.1.4
#   Downloaded intl_pluralrules v7.0.2
#   Downloaded os_pipe v1.2.3
#   Downloaded is_executable v1.0.5
#   Downloaded is_debug v1.1.0
#   Downloaded is_ci v1.2.0
#   Downloaded is-wsl v0.4.0
#   Downloaded is-docker v0.2.0
#   Downloaded intl-memoizer v0.5.3
#   Downloaded bracoxide v0.1.8
#   Downloaded backtrace-ext v0.2.1
#   Downloaded ansi-str v0.9.0
#   Downloaded alphanumeric-sort v1.5.5
#   Downloaded sha1_smol v1.0.1
#   Downloaded openssl-probe v0.1.6
#   Downloaded serde_urlencoded v0.7.1
#   Downloaded siphasher v1.0.2
#   Downloaded shell-words v1.1.1
#   Downloaded debug_unsafe v0.1.3
#   Downloaded const_format_proc_macros v0.2.34
#   Downloaded csv-core v0.1.13
#   Downloaded atoi_simd v0.16.1
#   Downloaded pest_consume_macros v1.1.0
#   Downloaded openssl-probe v0.2.1
#   Downloaded phf_shared v0.12.1
#   Downloaded displaydoc v0.2.5
#   Downloaded pest_consume v1.1.3
#   Downloaded http-body-util v0.1.3
#   Downloaded pwd v1.4.0
#   Downloaded fuzzy-matcher v0.3.7
#   Downloaded fluent v0.17.0
#   Downloaded fallible-iterator v0.3.0
#   Downloaded multipart-rs v0.1.13
#   Downloaded fixedbitset v0.5.7
#   Downloaded num-conv v0.2.0
#   Downloaded dtparse v2.0.1
#   Downloaded ipnet v2.11.0
#   Downloaded fs_extra v1.3.0
#   Downloaded fluent-syntax v0.12.0
#   Downloaded find-msvc-tools v0.1.9
#   Downloaded filetime v0.2.27
#   Downloaded sync_wrapper v1.0.2
#   Downloaded bytemuck v1.25.0
#   Downloaded supports-color v3.0.2
#   Downloaded print-positions v0.6.1
#   Downloaded inotify v0.9.6
#   Downloaded phf_shared v0.13.1
#   Downloaded inventory v0.3.21
#   Downloaded supports-unicode v3.0.0
#   Downloaded bytesize v2.3.1
#   Downloaded dialoguer v0.12.0
#   Downloaded devicons v0.6.12
#   Downloaded pathdiff v0.2.3
#   Downloaded serde_repr v0.1.20
#   Downloaded supports-hyperlinks v3.2.0
#   Downloaded time-core v0.1.8
#   Downloaded simplelog v0.12.2
#   Downloaded titlecase v3.6.0
#   Downloaded type-map v0.5.1
#   Downloaded unit-prefix v0.5.2
#   Downloaded uu_mktemp v0.5.0
#   Downloaded unicode-linebreak v0.1.5
#   Downloaded tree_magic_mini v3.2.2
#   Downloaded tower-service v0.3.3
#   Downloaded tower-layer v0.3.3
#   Downloaded testing_table v0.3.0
#   Downloaded serde_derive_internals v0.29.1
#   Downloaded typetag-impl v0.2.21
#   Downloaded try-lock v0.2.5
#   Downloaded strip-ansi-escapes v0.2.1
#   Downloaded v_htmlescape v0.15.8
#   Downloaded unic-langid v0.9.6
#   Downloaded md-5 v0.10.6
#   Downloaded mime_guess v2.0.5
#   Downloaded hashlink v0.10.0
#   Downloaded oem_cp v2.1.2
#   Downloaded glob v0.3.3
#   Downloaded nuon v0.110.0
#   Downloaded notify-debouncer-full v0.3.2
#   Downloaded openssl-macros v0.1.1
#   Downloaded httparse v1.10.1
#   Downloaded rustls-native-certs v0.8.3
#   Downloaded phf v0.13.1
#   Downloaded iana-time-zone v0.1.65
#   Downloaded rustls-pemfile v2.2.0
#   Downloaded clap v4.5.56
#   Downloaded utf8_iter v1.0.4
#   Downloaded synstructure v0.13.2
#   Downloaded phf v0.12.1
#   Downloaded rmcp-macros v0.8.5
#   Downloaded quote v1.0.44
#   Downloaded os_display v0.1.4
#   Downloaded hyper-rustls v0.27.7
#   Downloaded chardetng v0.1.17
#   Downloaded fluent-bundle v0.16.0
#   Downloaded uu_mkdir v0.5.0
#   Downloaded open v5.3.3
#   Downloaded fluent-uri v0.1.4
#   Downloaded fast-float2 v0.2.3
#   Downloaded miette-derive v7.6.0
#   Downloaded darling v0.21.3
#   Downloaded lscolors v0.20.0
#   Downloaded cookie v0.18.1
#   Downloaded slab v0.4.12
#   Downloaded lsp-server v0.7.9
#   Downloaded cookie_store v0.21.1
#   Downloaded console v0.16.2
#   Downloaded bytecount v0.6.9
#   Downloaded uucore_procs v0.5.0
#   Downloaded uu_uname v0.5.0
#   Downloaded tzdb v0.7.3
#   Downloaded socks v0.3.4
#   Downloaded self_cell v1.2.2
#   Downloaded pori v0.0.0
#   Downloaded want v0.3.1
#   Downloaded tui-tree-widget v0.23.1
#   Downloaded tinystr v0.8.2
#   Downloaded webpki-roots v0.26.11
#   Downloaded typetag v0.2.21
#   Downloaded sys-locale v0.3.2
#   Downloaded uu_whoami v0.5.0
#   Downloaded webpki-root-certs v0.26.11
#   Downloaded zerofrom-derive v0.1.6
#   Downloaded litemap v0.8.1
#   Downloaded schemars_derive v1.2.1
#   Downloaded termcolor v1.4.1
#   Downloaded parse_datetime v0.13.3
#   Downloaded rustls-pki-types v1.14.0
#   Downloaded rmp-serde v1.3.1
#   Downloaded owo-colors v4.2.3
#   Downloaded quinn-udp v0.5.14
#   Downloaded platform-info v2.0.5
#   Downloaded tokio-native-tls v0.3.1
#   Downloaded time-macros v0.2.26
#   Downloaded rmp v0.8.15
#   Downloaded umask v2.1.0
#   Downloaded lean_string v0.5.1
#   Downloaded zerofrom v0.1.6
#   Downloaded xattr v1.6.1
#   Downloaded wayland-protocols-wlr v0.3.10
#   Downloaded tokio-rustls v0.26.4
#   Downloaded yoke v0.8.1
#   Downloaded num-format v0.4.4
#   Downloaded rustls-platform-verifier v0.5.3
#   Downloaded notify v6.1.1
#   Downloaded wayland-sys v0.31.8
#   Downloaded shadow-rs v1.7.0
#   Downloaded nucleo-matcher v0.3.1
#   Downloaded writeable v0.6.2
#   Downloaded lsp-types v0.97.0
#   Downloaded procfs v0.18.0
#   Downloaded icu_provider v2.1.1
#   Downloaded icu_properties v2.1.2
#   Downloaded openssl-sys v0.9.111
#   Downloaded const_format v0.2.35
#   Downloaded utf-8 v0.7.6
#   Downloaded unicase v2.9.0
#   Downloaded update-informer v1.3.0
#   Downloaded uu_touch v0.5.0
#   Downloaded uu_mv v0.5.0
#   Downloaded proc-macro2 v1.0.106
#   Downloaded yoke-derive v0.8.1
#   Downloaded wayland-scanner v0.31.8
#   Downloaded uuid v1.20.0
#   Downloaded procfs-core v0.18.0
#   Downloaded rustls-webpki v0.103.9
#   Downloaded papergrid v0.17.0
#   Downloaded quinn v0.11.9
#   Downloaded serde_yaml v0.9.34+deprecated
#   Downloaded socket2 v0.6.2
#   Downloaded tz-rs v0.7.3
#   Downloaded web-time v1.1.0
#   Downloaded unsafe-libyaml v0.2.11
#   Downloaded iri-string v0.7.10
#   Downloaded indicatif v0.18.3
#   Downloaded mio v0.8.11
#   Downloaded icu_normalizer_data v2.1.1
#   Downloaded zmij v1.0.19
#   Downloaded icu_normalizer v2.1.1
#   Downloaded icu_locale_core v2.1.1
#   Downloaded textwrap v0.16.2
#   Downloaded zip v4.6.1
#   Downloaded wl-clipboard-rs v0.9.3
#   Downloaded zerovec-derive v0.11.2
#   Downloaded darling_core v0.21.3
#   Downloaded miette v7.6.0
#   Downloaded ureq-proto v0.4.2
#   Downloaded rusqlite v0.37.0
#   Downloaded webpki-root-certs v1.0.5
#   Downloaded zopfli v0.8.3
#   Downloaded unic-langid-impl v0.9.6
#   Downloaded url v2.5.8
#   Downloaded zerotrie v0.2.3
#   Downloaded tzdb_data v0.2.3
#   Downloaded itertools v0.11.0
#   Downloaded openssl v0.10.75
#   Downloaded ureq v3.0.12
#   Downloaded zerovec v0.11.5
#   Downloaded rustls v0.23.28
#   Downloaded zerocopy v0.7.35
#   Downloaded wayland-protocols v0.32.10
#   Downloaded sysinfo v0.37.2
#   Downloaded zlib-rs v0.5.5
#   Downloaded time v0.3.46
#   Downloaded webpki-roots v1.0.5
#   Downloaded uucore v0.5.0
#   Downloaded zerocopy v0.8.37
#   Downloaded x11rb v0.13.2
#   Downloaded tabled v0.20.0
#   Downloaded brotli-decompressor v5.0.0
#   Downloaded libm v0.2.16
#   Downloaded tower-http v0.6.8
#   Downloaded idna v1.1.0
#   Downloaded icu_properties_data v2.1.2
#   Downloaded hyper v1.8.1
#   Downloaded clap_builder v4.5.56
#   Downloaded nix v0.30.1
#   Downloaded bigdecimal v0.4.10
#   Downloaded x11rb-protocol v0.13.2
#   Downloaded hyper-util v0.1.20
#   Downloaded wayland-backend v0.3.12
#   Downloaded vcpkg v0.2.15
#   Downloaded petgraph v0.8.3
#   Downloaded tower v0.5.3
#   Downloaded interprocess v2.2.3
#   Downloaded brotli v8.0.2
#   Downloaded http v1.4.0
#   Downloaded jiff v0.2.18
#   Downloaded fancy-regex v0.17.0
#   Downloaded calamine v0.32.0
#   Downloaded chrono-tz v0.10.4
#   Downloaded tui-textarea v0.7.0
#   Downloaded schemars v1.2.1
#   Downloaded rmcp v0.8.5
#   Downloaded quinn-proto v0.11.13
#   Downloaded csv v1.4.0
#   Downloaded wax v0.6.0
#   Downloaded vte v0.14.1
#   Downloaded uu_cp v0.5.0
#   Downloaded pure-rust-locales v0.8.2
#   Downloaded icu_collections v2.1.1
#   Downloaded wayland-client v0.31.12
#   Downloaded portable-atomic v1.13.1
#   Downloaded jiff-static v0.2.18
#   Downloaded reedline v0.45.0
#   Downloaded rust_decimal v1.40.0
#   Downloaded reqwest v0.12.28
#   Downloaded cc v1.2.55
#   Downloaded tempfile v3.24.0
#   Downloaded encoding_rs v0.8.35
#   Downloaded linux-raw-sys v0.12.1
#   Downloaded libsqlite3-sys v0.35.0
#   Downloaded openssl-src v300.5.5+3.5.5
#   Downloaded 317 crates (36.1MiB) in 36.83s (largest was `openssl-src` at 6.7MiB)
