breaking: Remove setup script and use chezmoi

This commit is contained in:
js0ny 2025-09-27 02:25:06 +01:00
parent 02bbb24cac
commit 0051a163c3
190 changed files with 118 additions and 3456 deletions

13
.chezmoiignore Normal file
View file

@ -0,0 +1,13 @@
# .chezmoiignore
# macOS only
{{ if ne .chezmoi.os "darwin" -}}
{{ end -}}
# Linux only
{{ if ne .chezmoi.os "linux" -}}
{{ end -}}
# Windows only
{{ if ne .chezmoi.os "windows" -}}
{{ end -}}

View file

@ -1,45 +0,0 @@
test:
echo "DOTFILES={{DOTFILES}}"
echo "XDG_CONFIG_HOME={{XDG_CONFIG_HOME}}"
echo "XDG_DATA_HOME={{XDG_DATA_HOME}}"
check:
@just check_shell
format:
@just format_shell
[private]
[unix]
check_shell:
shellcheck -x -s sh --severity=error **/*.sh platforms/mac/yabairc
shellcheck -x -s bash --severity=error **/*.bash tools/bash/* **/*.bashrc
[private]
[unix]
format_shell:
shfmt -w -i 2 -ci -bn -p **/*.sh
shfmt -w -i 2 -ci -bn -ln bash **/*.bash platforms/mac/sketchybar/sketchybarrc
# Ignore syntax errors in zsh files
shfmt -w -i 2 -ci -bn -ln bash **/*.zsh tools/zsh/**/* **/zshrc || true
[private]
check_info:
shellcheck -x -s sh **/*.sh platforms/mac/yabairc
shellcheck -x -s bash **/*.bash tools/bash/* scripts/*.{sh,zsh,bash} **/*.bashrc
[private]
init:
git remote add github git@github.com:js0ny/dotfiles.git
git remote add codeberg git@codeberg.org:js0ny/dotfiles.git
[private]
push:
git push github master
git push codeberg master
[private]
pull:
git pull github master

View file

@ -1,26 +0,0 @@
# Sudo and coreutils are required
LN := \
if os_family() == "windows" {
"sudo ln -sf"
} else {
"ln -sf"
}
CLIP := \
if os() == "windows" { "clip.exe" } \
else if os() == "linux" { "wl-copy" } \
else if os() == "macos" { "pbcopy" } \
else { "" }
CURL := \
if os() == "windows" { "Invoke-WebRequest" } \
else if os() == "linux" { "curl -L" } \
else if os() == "macos" { "curl -L" } \
else { "" }
CURL_OUT := \
if os() == "windows" { "-OutFile" } \
else if os() == "linux" { "-o" } \
else if os() == "macos" { "-o" } \
else { "" }

View file

@ -1,52 +0,0 @@
ideavim:
{{LN}} {{DOTFILES}}/common/ideavimrc {{XDG_CONFIG_HOME}}/ideavim/ideavimrc
git clone https://github.com/MarcoIeni/intellimacs {{join(home_directory(), ".local/share/intellimacs")}} --depth 1
lsd:
-mkdir {{XDG_CONFIG_HOME}}/lsd
{{LN}} {{DOTFILES}}/common/lsd.yaml {{XDG_CONFIG_HOME}}/lsd/config.yaml
bat:
mkdir -p "$(bat --config-dir)/themes"
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Latte.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Frappe.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Mocha.tmTheme
{{LN}} {{DOTFILES}}/common/bat.config.dark {{DOTFILES}}/common/bat.config
{{LN}} {{DOTFILES}}/common/bat.config {{XDG_CONFIG_HOME}}/bat/config
[unix]
neovide:
which neovide
-mkdir -p {{XDG_CONFIG_HOME}}/neovide
{{LN}} {{DOTFILES}}/platforms/{{OS}}/neovide.toml {{XDG_CONFIG_HOME}}/neovide/config.toml
[linux]
readline:
mkdir -p {{XDG_CONFIG_HOME}}/readline
{{LN}} {{DOTFILES}}/common/inputrc {{XDG_CONFIG_HOME}}/readline/inputrc
[unix]
rtorrent:
mkdir -p {{XDG_CONFIG_HOME}}/rtorrent
{{LN}} {{DOTFILES}}/common/rtorrent.rc {{XDG_CONFIG_HOME}}/rtorrent/rtorrent.rc
mkdir -p {{XDG_DATA_HOME}}/rtorrent/session
mkdir -p {{XDG_DATA_HOME}}/rtorrent/watch
starship:
{{LN}} {{DOTFILES}}/common/starship.toml {{XDG_CONFIG_HOME}}/starship.toml
[unix]
vim:
mkdir -p {{XDG_DATA_HOME}}/vim/after
mkdir -p {{XDG_STATE_HOME}}/vim/{backup,swap,undo,view}
mkdir -p {{XDG_CONFIG_HOME}}/vim/
ln -sf {{DOTFILES}}/common/vimrc {{XDG_CONFIG_HOME}}/vim/vimrc
[windows]
vim:
New-Item -ItemType SymbolicLink -Path $HOME/_vimrc -Value {{DOTFILES}}/common/vim.noxdg.vimrc

View file

@ -1,61 +0,0 @@
[linux]
systemd:
{{LN}} {{DOTFILES}}/platforms/{{OS}}/systemd {{XDG_CONFIG_HOME}}/systemd
[linux]
keyd:
-which keyd || sudo pacman -S keyd --noconfirm || sudo apt install keyd --yes || @just build_keyd
sudo mkdir /etc/keyd/
sudo cp {{DOTFILES}}/platforms/linux/keyd/default.conf /etc/keyd/default.conf
mkdir -p {{XDG_CONFIG_HOME}}/keyd
{{LN}} {{DOTFILES}}/platforms/linux/keyd/app.conf {{XDG_CONFIG_HOME}}/keyd/app.conf
sudo systemctl enable --now keyd.service
[linux]
[private]
build_keyd:
git clone https://github.com/rvaiya/keyd $HOME/.local/build/keyd
cd $HOME/.local/build/keyd && make && sudo make install
[linux]
flatpak:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
[linux]
swaylock:
mkdir -p {{XDG_CONFIG_HOME}}/swaylock
{{LN}} {{DOTFILES}}/platforms/linux/swaylock {{XDG_CONFIG_HOME}}/swaylock/config
[linux]
dunst:
mkdir -p {{XDG_CONFIG_HOME}}/dunst
{{LN}} {{DOTFILES}}/platforms/linux/dunstrc {{XDG_CONFIG_HOME}}/dunst/dunstrc
[linux]
hypr:
{{LN}} {{DOTFILES}}/platforms/linux/hypr/hyprland/dark.conf {{DOTFILES}}/platforms/linux/hypr/hyprland/current.conf
{{LN}} {{DOTFILES}}/platforms/linux/hypr {{XDG_CONFIG_HOME}}/hypr
[linux]
rofi:
{{LN}} {{DOTFILES}}/platforms/linux/rofi/dark.rasi {{DOTFILES}}/platforms/linux/rofi/current.rasi
{{LN}} {{DOTFILES}}/platforms/linux/rofi {{XDG_CONFIG_HOME}}/rofi
[linux]
waybar:
{{LN}} {{DOTFILES}}/platforms/linux/waybar {{XDG_CONFIG_HOME}}/waybar
{{LN}} {{DOTFILES}}/platforms/linux/waybar/dark.css {{DOTFILES}}/platforms/linux/waybar/current.css
[linux]
hyprland:
@just hypr
@just dunst
@just swaylock
@just rofi
[linux]
fcitx:
[ -d {{XDG_CONFIG_HOME}}/fcitx5 ] && mv {{XDG_CONFIG_HOME}}/fcitx {{XDG_CONFIG_HOME}}/fcitx5.bak
{{LN}} {{DOTFILES}}/platforms/linux/fcitx5 {{XDG_CONFIG_HOME}}/fcitx5

View file

@ -1,15 +0,0 @@
uv:
uv init {{XDG_DATA_HOME}}/uvenv
cd {{XDG_DATA_HOME}}/uvenv
uv venv
uv add -r {{DOTFILES}}/bootstrap/components/requirements.txt
vivaldi:
{{CURL}} https://github.com/catppuccin/vivaldi/releases/download/1.0.0-ctpv2/Catppuccin.Latte.Lavender.zip {{CURL_OUT}} "$HOME/Downloads/vivaldi-light.zip" # Catppuccin Latte Lavender
{{CURL}} https://github.com/catppuccin/vivaldi/releases/download/1.0.0-ctpv2/Catppuccin.Mocha.Lavender.zip {{CURL_OUT}} "$HOME/Downloads/vivaldi-dark.zip" # Catppuccin Mocha Lavender
zotero:
{{CURL}} https://github.com/syt2/zotero-addons/releases/download/V1.8.1/zotero-addons.xpi {{CURL_OUT}} "$HOME/Downloads/zotero-addons.xpi"

View file

@ -1,69 +0,0 @@
[unix]
kitty:
which kitty
{{LN}} {{DOTFILES}}/tools/kitty {{XDG_CONFIG_HOME}}/kitty
neovim:
which nvim
{{LN}} {{DOTFILES}}/tools/nvim {{XDG_CONFIG_HOME}}/nvim
nvim --headless +checkhealth +"w nvim-healthcheck.txt" +qall
nvim:
@just neovim
[linux]
bash:
{{LN}} {{DOTFILES}}/tools/bash {{XDG_CONFIG_HOME}}/bash
sudo cp {{DOTFILES}}/tools/bash/xdg-compat.sh /etc/profile.d/xdg-compat.sh
[unix]
fish:
{{LN}} {{DOTFILES}}/tools/fish {{XDG_CONFIG_HOME}}/fish
{{CURL}} https://raw.githubusercontent.com/SpaceAceMonkey/dotenv-for-fish/refs/heads/main/dotenv.fish {{CURL_OUT}} "{{DOTFILES}}/tools/fish/functions/dotenv.fish"
[unix]
screen:
{{LN}} {{DOTFILES}}/tools/screen {{XDG_CONFIG_HOME}}/screen
[unix]
tmux:
{{LN}} {{DOTFILES}}/tools/tmux {{XDG_CONFIG_HOME}}/tmux
thunderbird:
{{CURL}} https://github.com/wshanks/tbkeys/releases/download/v2.4.0/tbkeys.xpi {{CURL_OUT}} "$HOME/Downloads/tbkeys.xpi"
{{CURL}} https://github.com/htyxyt/htyxyt-immersive-translate-Thunderbird/releases/download/thunderbird-v1.14.8/immersive-translate-Thunderbird.v1.14.8.xpi {{CURL_OUT}} "$HOME/Downloads/immersive-translate-Thunderbird.xpi"
{{CURL}} https://raw.githubusercontent.com/catppuccin/thunderbird/refs/heads/main/themes/mocha/mocha-lavender.xpi {{CURL_OUT}} "$HOME/Downloads/thunderbird-dark.xpi"
cat {{DOTFILES}}/tools/thunderbird/tbkeys.json | {{CLIP}}
wezterm:
which wezterm
{{LN}} {{DOTFILES}}/tools/wezterm {{XDG_CONFIG_HOME}}/wezterm
yazi:
which yazi || cargo install --locked yazi-fm yazi-cli
-ya pack -a llanosrocas/yaziline
-ya pack -a yazi-rs/plugins:git
-ya pack -a Rolv-Apneseth/starship
[unix]
zsh:
-[[ -f /etc/zshenv ]] && sudo cp {{DOTFILES}}/tools/zsh/global.zshenv /etc/zshenv # or /etc/zsh/zshenv
-[[ -f /etc/zsh/zshenv ]] && sudo cp {{DOTFILES}}/tools/zsh/global.zshenv /etc/zsh/zshenv
mkdir -p {{XDG_CONFIG_HOME}}/zsh
{{LN}} {{DOTFILES}}/tools/zsh/zshenv {{XDG_CONFIG_HOME}}/zsh/.zshenv
{{LN}} {{DOTFILES}}/tools/zsh/zshrc {{XDG_CONFIG_HOME}}/zsh/.zshrc
{{LN}} {{DOTFILES}}/tools/zsh/zprofile {{XDG_CONFIG_HOME}}/zsh/.zprofile
test -d {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-autosuggestions || git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-autosuggestions
test -d {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-syntax-highlighting || git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-syntax-highlighting
test -d {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-history-substring-search || git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-history-substring-search
test -d {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-completions || git clone --depth 1 https://github.com/zsh-users/zsh-completions.git {{XDG_CONFIG_HOME}}/zsh/plugins/zsh-completions
[linux]
install_emacs:
git clone --depth 1 https://github.com/emacs-mirror/emacs.git --branch feature/igc $HOME/.local/build/emacs-igc-build
cd $HOME/.local/build/emacs-igc-build
./autogen.sh
./configure --with-mailutils --with-native-compilation --with-pgtk --with-tree-sitter --with-imagemagick
make -j$(nproc)
sudo make install

View file

@ -1,42 +0,0 @@
OS := \
if os() == "linux" {
if env("WSL_DISTRO_NAME","") != "" {
"wsl"
} else {
"linux"
}
} else if os() == "windows" {
"win"
} else if os() == "macos" {
"mac"
} else { "" }
DOTFILES := join(home_directory(), ".dotfiles")
XDG_CONFIG_HOME := \
if env("XDG_CONFIG_HOME", "") != "" {env("XDG_CONFIG_HOME", "")} \
else {
if os_family() == "windows" {
env("APPDATA")
} else {
join(home_directory(), ".config")
}
}
XDG_DATA_HOME := \
if env("XDG_DATA_HOME", "") != "" {env("XDG_DATA_HOME", "")} \
else {
if os_family() == "windows" {
env("LOCALAPPDATA", "")
} else {
join(home_directory(), ".local/share")
}
}
XDG_STATE_HOME := \
if env("XDG_STATE_HOME", "") != "" {env("XDG_STATE_HOME", "")} \
else {
if os_family() == "windows" {
join(env("LOCALAPPDATA", ""), "state")
} else {
join(home_directory(), ".local/state")
}
}

View file

@ -1,15 +0,0 @@
# set shell := ["fish", "-c"]
set shell := ["bash", "-c"]
set windows-shell := ["pwsh", "-c"]
import '.just.d/vars.just'
import '.just.d/cmds.just'
import '.just.d/common.just'
import '.just.d/tools.just'
import '.just.d/misc.just'
import '.just.d/linux.just'
import '.just.d/check.just'
_default:
@just test
@just --list

View file

@ -1,11 +0,0 @@
#!/bin/sh
# shellcheck shell=sh
echo "[INFO] Installing DOOM Emacs"
echo "[ACTION] Request Human Takeover"
test -d ~/.config/emacs && mv ~/.config/emacs ~/.config/emacs.bak
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs
~/.config/emacs/bin/doom install
~/.config/emacs/bin/doom sync
echo "[INFO] Installing Emacs-Rime"
git clone --depth 1 https://github.com/js0ny/Rime.git ~/.config/emacs/.local/cache/rime

View file

@ -1,231 +0,0 @@
#!/usr/bin/env bash
# Adds better error handling and safety features
# shellcheck disable=SC2016
set -e # Exit immediately if a command exits with a non-zero status
set -u # Treat unset variables as an error
# Create temporary working directory
TEMP_DIR="${HOME}/.tmp/catppuccin-install"
mkdir -p "${TEMP_DIR}"
# Create config directories
mkdir -p "${HOME}/.config/tmux/plugins"
mkdir -p "${HOME}/.config/yazi"
mkdir -p "${HOME}/.config/btop/themes"
mkdir -p "${HOME}/.config/git"
mkdir -p "${HOME}/.config/lsd"
mkdir -p "${HOME}/.local/share/mc/skins"
mkdir -p "${HOME}/.config/fish/themes"
mkdir -p "${HOME}/.local/share/fcitx5/themes"
# Function for downloading files
download_file() {
local url="$1"
local output_path="$2"
local output_dir
# Extract directory from output path
output_dir=$(dirname "$output_path")
# Create directory if it doesn't exist
if [ ! -d "$output_dir" ]; then
mkdir -p "$output_dir"
fi
# Print status message
echo "Downloading: $url"
echo " to: $output_path"
# Download with curl (using -L to follow redirects)
if ! curl -L -s --fail "$url" -o "$output_path"; then
echo "Error: Failed to download $url" >&2
return 1
fi
# Verify file was downloaded
if [ ! -f "$output_path" ]; then
echo "Error: File was not created at $output_path" >&2
return 1
fi
echo "Download successful."
return 0
}
# Function to check if command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Install Bat themes
if command_exists bat; then
BAT_CONFIG_DIR=$(bat --config-dir 2>/dev/null || echo "${HOME}/.config/bat")
mkdir -p "${BAT_CONFIG_DIR}/themes"
echo "Installing Bat themes..."
THEMES=("Latte" "Frappe" "Macchiato" "Mocha")
for theme in "${THEMES[@]}"; do
download_file "https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20${theme}.tmTheme" \
"${BAT_CONFIG_DIR}/themes/Catppuccin ${theme}.tmTheme"
done
echo "Rebuilding Bat cache..."
bat cache --build || echo "WARNING: Failed to rebuild Bat cache" >&2
else
echo "Bat not found, skipping Bat themes installation" >&2
fi
# Install Tmux plugin
if command_exists tmux; then
echo "Installing Tmux plugin..."
TMUX_PLUGIN_DIR="${HOME}/.config/tmux/plugins/catppuccin"
rm -rf "${TMUX_PLUGIN_DIR}"
mkdir -p "${TMUX_PLUGIN_DIR}"
if command_exists git; then
if ! git clone -b v2.1.2 --depth=1 https://github.com/catppuccin/tmux.git "${TMUX_PLUGIN_DIR}/tmux" 2>/dev/null; then
echo "WARNING: Failed to clone Tmux plugin repository" >&2
fi
else
echo "Git not found, skipping Tmux plugin installation" >&2
fi
else
echo "Tmux not found, skipping Tmux plugin installation" >&2
fi
# Install Yazi theme
if command_exists yazi; then
echo "Installing Yazi theme..."
download_file "https://raw.githubusercontent.com/catppuccin/yazi/main/themes/mocha/catppuccin-mocha-lavender.toml" \
"${HOME}/.config/yazi/theme.toml"
else
echo "Yazi not found, skipping Yazi theme installation" >&2
fi
# Install BTopa themes
if command_exists btop; then
echo "Installing BTopa themes..."
download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_mocha.theme" \
"${HOME}/.config/btop/themes/catppuccin_mocha.theme"
download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_latte.theme" \
"${HOME}/.config/btop/themes/catppuccin_latte.theme"
else
echo "BTopa not found, skipping BTopa themes installation" >&2
fi
# Install Delta config
echo "Installing Delta config..."
download_file "https://raw.githubusercontent.com/catppuccin/delta/main/catppuccin.gitconfig" \
"${HOME}/.config/git/catppuccin-delta.gitconfig"
# Configure FZF
if command_exists fzf; then
echo "Configuring FZF..."
# Check shell type to determine how to set environment variables
if [ -n "${FISH_VERSION:-}" ] || command_exists fish; then
# For Fish shell
fish -c 'set -U FZF_DEFAULT_OPTS "--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi"' \
|| echo "WARNING: Failed to set FZF options for Fish shell" >&2
else
# For Bash/Zsh - add to both .bashrc and .zshrc if they exist
FZF_CONFIG="export FZF_DEFAULT_OPTS=\"--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi\""
# Add to .bashrc if it exists
if [ -f "${HOME}/.bashrc" ]; then
if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.bashrc"; then
echo "${FZF_CONFIG}" >>"${HOME}/.bashrc"
echo "Added FZF configuration to .bashrc"
fi
fi
# Add to .zshrc if it exists
if [ -f "${HOME}/.zshrc" ]; then
if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.zshrc"; then
echo "${FZF_CONFIG}" >>"${HOME}/.zshrc"
echo "Added FZF configuration to .zshrc"
fi
fi
fi
else
echo "FZF not found, skipping FZF configuration" >&2
fi
# Install LSD themes
if command_exists lsd; then
echo "Installing LSD themes..."
download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-mocha/colors.yaml" \
"${HOME}/.config/lsd/colors.yaml"
download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-latte/colors.yaml" \
"${HOME}/.config/lsd/colors-light.yaml"
else
echo "LSD not found, skipping LSD themes installation" >&2
fi
# Install Midnight Commander skin
echo "Installing Midnight Commander skin..."
download_file "https://raw.githubusercontent.com/catppuccin/mc/main/catppuccin.ini" \
"${HOME}/.local/share/mc/skins/catppuccin.ini"
# Print MC configuration hint
echo "Note: To use the Midnight Commander theme:"
echo " - Change or add skin=catppuccin in the [Midnight-Commander] section inside ~/.config/mc/ini"
echo " - OR choose the skin inside Midnight Commander through F9 > Options > Appearance"
echo " - Save setup through F9 > Options > Save setup"
# Install PowerShell module
if command_exists pwsh; then
echo "Installing PowerShell module..."
PS_MODULE_PATH=$(pwsh -C 'Write-Output $Env:PSModulePath.split(":")[0]' 2>/dev/null)
if [ -n "${PS_MODULE_PATH}" ]; then
if command_exists git; then
if ! git clone --depth=1 https://github.com/catppuccin/powershell.git "${PS_MODULE_PATH}/Catppuccin" 2>/dev/null; then
echo "WARNING: Failed to clone PowerShell module repository" >&2
fi
else
echo "Git not found, skipping PowerShell module installation" >&2
fi
else
echo "PowerShell module path not found, skipping PowerShell module installation" >&2
fi
else
echo "PowerShell not found, skipping PowerShell module installation" >&2
fi
# Install Fish themes
if command_exists fish; then
echo "Installing Fish themes..."
download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Mocha.theme" \
"${HOME}/.config/fish/themes/Catppuccin Mocha.theme"
download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Latte.theme" \
"${HOME}/.config/fish/themes/Catppuccin Latte.theme"
else
echo "Fish not found, skipping Fish themes installation" >&2
fi
# Install Fcitx5 themes
if command_exists fcitx5; then
echo "Installing Fcitx5 themes..."
rm -rf "${TEMP_DIR}/fcitx5"
if command_exists git; then
if git clone --depth=1 https://github.com/catppuccin/fcitx5.git "${TEMP_DIR}/fcitx5" 2>/dev/null; then
cp -r "${TEMP_DIR}/fcitx5/src/"* "${HOME}/.local/share/fcitx5/themes/"
else
echo "WARNING: Failed to clone Fcitx5 repository" >&2
fi
else
echo "Git not found, skipping Fcitx5 themes installation" >&2
fi
else
echo "Fcitx5 not found, skipping Fcitx5 themes installation" >&2
fi
# Clean up temporary directory
rm -rf "${TEMP_DIR}"
echo "Catppuccin themes installation completed!"

View file

@ -1,43 +0,0 @@
mkdir -p ~/.tmp
# Bat
mkdir -p "$(bat --config-dir)/themes"
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Latte.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Frappe.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Mocha.tmTheme
bat cache --build
# Tmux
mkdir -p ~/.config/tmux/plugins/catppuccin:w
git clone -b v2.1.2 https://github.com/catppuccin/tmux.git ~/.config/tmux/plugins/catppuccin/tmux
# Yazi
curl https://raw.githubusercontent.com/catppuccin/yazi/refs/heads/main/themes/mocha/catppuccin-mocha-lavender.toml -o ~/.config/yazi/theme.toml
# BTop
curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_mocha.theme -o ~/.config/btop/themes/catppuccin_mocha.theme
curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_latte.theme -o ~/.config/btop/themes/catppuccin_latte.theme
# Delta
curl https://raw.githubusercontent.com/catppuccin/delta/refs/heads/main/catppuccin.gitconfig -o ~/.config/git/catppuccin-delta.gitconfig
# Fzf
set -Ux FZF_DEFAULT_OPTS "\
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
--color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 \
--color=selected-bg:#45475a \
--multi"
# LsD
curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-mocha/colors.yaml -o ~/.config/lsd/colors.yaml
curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-latte/colors.yaml -o ~/.config/lsd/colors-light.yaml
# Midnight Commander
# Change or add skin=catppuccin in the [Midnight-Commander] section inside ~/.config/mc/ini OR Choose the skin inside Midnight Commander through F9>Options>Appearance and Save setup through F9>Options/Save setup
mkdir -p $HOME/.local/share/mc/skins
curl https://raw.githubusercontent.com/catppuccin/mc/refs/heads/main/catppuccin.ini -o $HOME/.local/share/mc/skins/catppuccin.ini
# PowerShell
pwsh -C 'git clone https://github.com/catppuccin/powershell.git (Join-Path $Env:PSModulePath.split(":")[0] Catppuccin)'
# Fish
mkdir -p ~/.config/fish/themes
curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Mocha.theme -o ~/.config/fish/themes/Catppuccin\ Mocha.theme
curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Latte.theme -o ~/.config/fish/themes/Catppuccin\ Latte.theme
# fcitx5
git clone https://github.com/catppuccin/fcitx5.git ~/.tmp/fcitx5
cd ~/.tmp/fcitx5
mkdir -p ~/.local/share/fcitx5/themes
cp -r ./src/* ~/.local/share/fcitx5/themes

View file

@ -1,3 +0,0 @@
Install-Module CompletionPredictor
Install-Module PSFzf
Install-Module Posh-Git

View file

@ -1,112 +0,0 @@
anyio==4.8.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==3.0.0
async-lru==2.0.4
attrs==25.1.0
babel==2.17.0
beautifulsoup4==4.13.3
bleach==6.2.0
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
comm==0.2.2
contourpy==1.3.1
cycler==0.12.1
debugpy==1.8.13
decorator==5.2.1
defusedxml==0.7.1
executing==2.2.0
fastjsonschema==2.21.1
fonttools==4.56.0
fqdn==1.5.1
h11==0.14.0
httpcore==1.0.7
httpx==0.28.1
idna==3.10
ipykernel==6.29.5
ipython==9.0.2
ipython-pygments-lexers==1.1.1
ipywidgets==8.1.5
isoduration==20.11.0
jedi==0.19.2
jinja2==3.1.6
joblib==1.4.2
json5==0.10.0
jsonpointer==3.0.0
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
jupyter==1.1.1
jupyter-client==8.6.3
jupyter-console==6.6.3
jupyter-core==5.7.2
jupyter-events==0.12.0
jupyter-lsp==2.2.5
jupyter-server==2.15.0
jupyter-server-terminals==0.5.3
jupyterlab==4.3.5
jupyterlab-pygments==0.3.0
jupyterlab-server==2.27.3
jupyterlab-widgets==3.0.13
kiwisolver==1.4.8
markupsafe==3.0.2
matplotlib==3.10.1
matplotlib-inline==0.1.7
mistune==3.1.2
nbclient==0.10.2
nbconvert==7.16.6
nbformat==5.10.4
nest-asyncio==1.6.0
notebook==7.3.2
notebook-shim==0.2.4
numpy==2.2.3
overrides==7.7.0
packaging==24.2
pandas==2.2.3
pandocfilters==1.5.1
parso==0.8.4
pexpect==4.9.0
pillow==11.1.0
platformdirs==4.3.6
prometheus-client==0.21.1
prompt-toolkit==3.0.50
psutil==7.0.0
ptyprocess==0.7.0
pure-eval==0.2.3
pycparser==2.22
pygments==2.19.1
pyparsing==3.2.1
python-dateutil==2.9.0.post0
python-json-logger==3.3.0
pytz==2025.1
pyyaml==6.0.2
pyzmq==26.2.1
referencing==0.36.2
requests==2.32.3
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.23.1
scikit-learn==1.6.1
scipy==1.15.2
send2trash==1.8.3
setuptools==76.0.0
six==1.17.0
sniffio==1.3.1
soupsieve==2.6
stack-data==0.6.3
terminado==0.18.1
threadpoolctl==3.5.0
tinycss2==1.4.0
tornado==6.4.2
traitlets==5.14.3
types-python-dateutil==2.9.0.20241206
typing-extensions==4.12.2
tzdata==2025.1
uri-template==1.3.0
urllib3==2.3.0
wcwidth==0.2.13
webcolors==24.11.1
webencodings==0.5.1
websocket-client==1.8.0
widgetsnbextension==4.0.13

View file

@ -1,17 +0,0 @@
echo "[INFO] Installing Rime"
case "$(uname)" in
Linux)
RIMEDIR="${RIMEDIR:-$HOME/.local/share/fcitx5/rime}"
;;
Darwin)
RIMEDIR="${RIMEDIR:-$HOME/Library/Rime}"
;;
esac
git clone --depth 1 https://github.com/js0ny/rime_wanxiang_pro.git "$RIMEDIR"
cd "$RIMEDIR" || exit
just init
# just install_rime
just clone_plum

View file

@ -1,110 +0,0 @@
#!/usr/bin/env bash
# vim:ft=bash
# shellcheck disable=SC1090 shell=bash
# This should be run with bash > 4.0 or zsh
set -e # Exit immediately if a command exits with a non-zero status
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
ZDOTDIR="${ZDOTDIR:-$HOME/.config/zsh}"
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
NPM_CONFIG_USERCONFIG="${NPM_CONFIG_USERCONFIG:-$XDG_CONFIG_HOME/npm/npmrc}"
GUI_SETUP="${GUI_SETUP:-1}"
WHEEL="${WHEEL:-0}"
XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
echo "[INFO] Setting up some local directories"
test -d "$XDG_CACHE_HOME" || mkdir -p "$XDG_CACHE_HOME"
test -d "$XDG_DATA_HOME" || mkdir -p "$XDG_DATA_HOME"
test -d "$XDG_STATE_HOME" || mkdir -p "$XDG_STATE_HOME"
test -d ~/.local/state/zsh || mkdir -p ~/.local/state/zsh
# echo "[INFO] Setting up system-wide zsh configuration"
# echo "[ACTION] Elevation required!"
# test -f "/etc/zsh/zshenv" && sudo cp "$DOTFILES/tools/zsh/zshenv" "/etc/zsh/zshenv"
# test -f "/etc/zshenv" && sudo cp "$DOTFILES/tools/zsh/zshenv" "/etc/zshenv"
declare -A linkDots
linkDots=(
["$DOTFILES/common/condarc.yaml"]="$XDG_CONFIG_HOME/conda/.condarc"
# ["$DOTFILES/common/gitconfig"]="$XDG_CONFIG_HOME/git/config"
["$DOTFILES/common/glow.yaml"]="$HOME/.config/glow/config.yml"
["$DOTFILES/common/haskeline"]="$HOME/.haskeline"
["$DOTFILES/common/ideavimrc"]="$XDG_CONFIG_HOME/ideavim/ideavimrc"
["$DOTFILES/common/lazygit.yaml"]="$XDG_CONFIG_HOME/lazygit/config.yml"
["$DOTFILES/common/lesskey"]="$XDG_CONFIG_HOME/lesskey"
["$DOTFILES/common/npmrc"]="$NPM_CONFIG_USERCONFIG"
["$DOTFILES/common/NuGet.Config"]="$XDG_CONFIG_HOME/NuGet/NuGet.Config"
["$DOTFILES/common/pip.conf"]="$XDG_CONFIG_HOME/pip/pip.conf"
["$DOTFILES/common/starship.toml"]="$HOME/.config/starship.toml"
["$DOTFILES/common/tmux.conf"]="$XDG_CONFIG_HOME/tmux/tmux.conf"
["$DOTFILES/common/vimrc"]="$XDG_CONFIG_HOME/vim/vimrc"
["$DOTFILES/common/zellij.config.kdl"]="$HOME/.config/zellij/config.kdl"
# ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d"
["$DOTFILES/tools/doom"]="$HOME/.config/doom"
["$DOTFILES/tools/fish"]="$HOME/.config/fish"
["$DOTFILES/tools/ipython"]="$XDG_CONFIG_HOME/ipython"
["$DOTFILES/tools/nvim"]="$XDG_CONFIG_HOME/nvim"
["$DOTFILES/tools/yazi"]="$HOME/.config/yazi"
["$DOTFILES/tools/zsh/zshrc"]="$ZDOTDIR/.zshrc"
["$DOTFILES/tools/zsh/zshenv"]="$ZDOTDIR/.zshenv"
["$DOTFILES/platforms/mac/pwshProfile.ps1"]="$HOME/.config/powershell/Microsoft.PowerShell_profile.ps1"
)
if [ $(uname) = "Darwin" ]; then
echo "[INFO] Running on macOS"
linkDots+=(
["$DOTFILES/platforms/mac/karabiner"]="$HOME/.config/karabiner"
["$DOTFILES/platforms/mac/skhdrc"]="$XDG_CONFIG_HOME/skhd/skhdrc"
["$DOTFILES/platforms/mac/sketchybarrc"]="$XDG_CONFIG_HOME/sketchybar/sketchybarrc"
["$DOTFILES/platforms/mac/yabairc"]="$XDG_CONFIG_HOME/yabai/yabairc"
["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm"
["$DOTFILES/tools/zed"]="$HOME/.config/zed"
["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek"
)
else
echo "[INFO] Running on Linux"
linkDots+=(
["$DOTFILES/common/inputrc"]="$XDG_CONFIG_HOME/readline/inputrc"
)
# WSL1 : Microsoft
# WSL2 : microsoft
# if [ "$(uname -r)" = *icrosoft* ]; then
# echo "[INFO] Running on WSL"
# : # NOP
if [ "$GUI_SETUP" -eq 1 ]; then
echo "[INFO] Setting up Linux GUI Applications"
linkDots+=(
["$DOTFILES/platforms/linux/awesome"]="$HOME/.config/awesome"
["$DOTFILES/platforms/linux/hypr"]="$HOME/.config/hypr"
["$DOTFILES/platforms/linux/waybar"]="$HOME/.config/waybar"
["$DOTFILES/platforms/linux/wlogout"]="$HOME/.config/wlogout"
["$DOTFILES/platforms/linux/mako-config"]="$HOME/.config/mako/config"
["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm"
["$DOTFILES/tools/zed"]="$HOME/.config/zed"
["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek"
)
for kde in "$DOTFILES/platforms/linux/kde/"*; do
linkDots+=["$kde"]="$HOME/.config/kde/$(basename "$kde")"
# echo "Linking $kde to $HOME/.config/kde/$(basename $kde)"
done
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Setting up system environment variables"
echo "[ACTION] Elevation required!"
sudo cp "$DOTFILES/platforms/linux/etc/environment" "/etc/environment"
fi
fi
fi
echo "[INFO] Copying example files"
test -d $XDG_CONFIG_HOME/git || mkdir -p $XDG_CONFIG_HOME/git
test -f $XDG_CONFIG_HOME/git/config && mv $XDG_CONFIG_HOME/git/config $XDG_CONFIG_HOME/git/config.bak
cp $DOTFILES/common/gitconfig.example $XDG_CONFIG_HOME/git/config
echo "[INFO] Don't forget to update your gitconfig!"
test -f ~/.wakatime.cfg && mv ~/.wakatime.cfg ~/.wakatime.cfg.bak
cp $DOTFILES/common/wakatime.example.cfg ~/.wakatime.cfg
echo "[INFO] Don't forget to update your wakatime config!"

View file

@ -1,28 +0,0 @@
WHEEL="${WHEEL:-1}"
echo "[INFO] ZDOTDIR = $ZDOTDIR"
echo "[INFO] DOTFILES = $DOTFILES"
echo "[INFO] WHEEL = $WHEEL"
echo "[ACTION] Press any key to proceed"
read -n 1
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Setting up system-wide zsh configuration"
echo "[ACTION] Elevation required"
test -f "/etc/zsh/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zsh/zshenv"
test -f "/etc/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv"
if [ "$(uname)" = "Darwin" ]; then
sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv"
fi
else
echo "[INFO] Setting up user zsh configuration"
# A fallback case to set $ZDOTDIR in ~/.zshenv if the user cannot access global zshenv
ln -sf "$DOTFILES/tools/zsh/zshenv" "$HOME/.zshenv"
fi
echo "[INFO] Installing zsh plugins"
test -d "$ZDOTDIR"/plugins/zsh-autosuggestions || git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git "$ZDOTDIR"/plugins/zsh-autosuggestions
test -d "$ZDOTDIR"/plugins/zsh-syntax-highlighting || git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZDOTDIR"/plugins/zsh-syntax-highlighting
test -d "$ZDOTDIR"/plugins/zsh-history-substring-search || git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git "$ZDOTDIR"/plugins/zsh-history-substring-search
test -d "$ZDOTDIR"/plugins/zsh-completions || git clone --depth 1 https://github.com/zsh-users/zsh-completions.git "$ZDOTDIR"/plugins/zsh-completions

View file

@ -1,12 +0,0 @@
#!/usr/bin/env bash
# vim:ft=bash
echo "[INFO] Installing AppMan"
echo "[ACTION] Type [2] to install AppMan"
wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER
APPMAN_PATH="$HOME/.local/bin/appman"
if command -v "$APPMAN_PATH" >/dev/null 2>&1; then
$APPMAN_PATH install wezterm
$APPMAN_PATH install nvim
fi

View file

@ -1,71 +0,0 @@
#!/usr/bin/env bash
# vim:ft=bash
# chromium-flags.sh
# Set Chromium & Electron Flags
echo "[INFO] Set Chromium & Electron Flags"
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
BROWSER_FLAG=$DOTFILES/platforms/linux/chromium-flags.conf
ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.conf
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
# --debug|-d)
# export LOG_LEVEL="DEBUG"
# log_debug "Debug mode enabled"
# shift
# ;;
--force|-f)
FORCE_FILE="true"
echo "Force update enabled"
shift
;;
*)
echo "Unknown argument: $1"
echo "Usage: chromium-flags.sh [--debug|-d] [--force|-f]"
exit 1
;;
esac
done
}
parse_args "$@"
# Browser Flags
browser_flags_path=(
"$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium
"$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome
"$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium
"$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi
"$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi
)
electron_flags_path=(
"$XDG_CONFIG_HOME/electron-flags.conf" # General
"$XDG_CONFIG_HOME/code-flags.conf" # VSCode
"$XDG_CONFIG_HOME/qq-electron-flags.conf" # QQ
)
for path in "${browser_flags_path[@]}"; do
if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Browser Flags: $path"
else
echo "[INFO] Creating Browser Flags: $path"
ln -sf "$BROWSER_FLAG" "$path"
fi
done
for path in "${electron_flags_path[@]}"; do
if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Electron Flags: $path"
else
echo "[INFO] Creating Electron Flags: $path"
ln -sf "$ELECTRON_FLAG" "$path"
fi
done

View file

@ -1,71 +0,0 @@
#!/usr/bin/env bash
# vim:ft=bash
# chromium-flags.sh
# Set Chromium & Electron Flags
echo "[INFO] Set Chromium & Electron Flags"
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
BROWSER_FLAG=$DOTFILES/platforms/linux/chromium-flags.hypr.conf
ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.hypr.conf
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
# --debug|-d)
# export LOG_LEVEL="DEBUG"
# log_debug "Debug mode enabled"
# shift
# ;;
--force|-f)
FORCE_FILE="true"
echo "Force update enabled"
shift
;;
*)
echo "Unknown argument: $1"
echo "Usage: chromium-flags.sh [--debug|-d] [--force|-f]"
exit 1
;;
esac
done
}
parse_args "$@"
# Browser Flags
browser_flags_path=(
"$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium
"$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome
"$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium
"$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi
"$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi
)
electron_flags_path=(
"$XDG_CONFIG_HOME/electron-flags.conf" # General
"$XDG_CONFIG_HOME/code-flags.conf" # VSCode
"$XDG_CONFIG_HOME/qq-electron-flags.conf" # QQ
)
for path in "${browser_flags_path[@]}"; do
if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Browser Flags: $path"
else
echo "[INFO] Creating Browser Flags: $path"
ln -sf "$BROWSER_FLAG" "$path"
fi
done
for path in "${electron_flags_path[@]}"; do
if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Electron Flags: $path"
else
echo "[INFO] Creating Electron Flags: $path"
ln -sf "$ELECTRON_FLAG" "$path"
fi
done

View file

@ -1,44 +0,0 @@
#!/usr/bin/env false
# TODO: This script is not ready for use yet
# -*- coding: utf-8 -*-
# Append Electron argument (for wayland) to *.desktop files
import argparse
import configparser
import os
APPEND_ARG_FILE = "~/.dotfiles/platforms/linux/electron-flags.conf"
with open(os.path.expanduser(APPEND_ARG_FILE)) as f:
APPEND_ARGS = list(map(str.strip, f.readlines()))
# for file in desktop_files:
# config = configparser.ConfigParser()
# config.read(file)
def append_arg(file):
config = configparser.ConfigParser()
config.read(file)
try:
exec_line = config["Desktop Entry"].get("Exec")
except KeyError:
print(f"Skipping {file} as it does not have an Exec key")
return
print(f"Appending {APPEND_ARGS} to {exec_line}")
config["Desktop Entry"].update({"Exec": f"{exec_line} {' '.join(APPEND_ARGS)}"})
with open(file, "w") as f:
config.write(f)
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--file", help="Desktop file to modify")
args = parser.parse_args()
append_arg(args.file)
pass
if __name__ == "__main__":
main()

View file

@ -1,193 +0,0 @@
#!/usr/bin/env bash
# vim:ft=bash
set -e
echo "Running the setup script"
# Variables
export DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
# If is in the sudo or wheel group, set the WHEEL variable to 1
WHEEL=0
groups "$(whoami)" | grep -E -q '\b(sudo|wheel)\b' && WHEEL=1
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Running as sudo or wheel group"
else
echo "[INFO] Not running as sudo or wheel group"
fi
export WHEEL
GUI_SETUP=0
IS_WSL=0
WINDOWS_USER=""
PACKAGE_MANAGER=""
# WSL detection
# NOTE: This is NOT a POSIX-compliant way, for POSIX-compliant way, use case/esac
if [[ "$(uname -r)" = *icrosoft* ]]; then
echo "[INFO] Running on WSL"
WINDOWS_USER="$(cmd.exe /c "echo %USERNAME%" | tr -d '\r')"
IS_WSL=1
fi
if [ "$IS_WSL" -eq 1 ]; then
if [[ "$(uname -r)" = *Microsoft* ]]; then
IS_WSL=1
elif [[ "$(uname -r)" = *microsoft* ]]; then
IS_WSL=2
fi
fi
if [ "$IS_WSL" -eq 1 ]; then
echo "[INFO] Running on WSL1 Skipping GUI setup"
else
read -p "[ACTION] Do you want to setup Linux GUI? (y/N) " -r choice
case "$choice" in
y | Y)
GUI_SETUP=1
;;
*)
echo "[INFO] Skipping GUI setup"
;;
esac
fi
export GUI_SETUP
# base-devel
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Installing basic build tools"
if command -v apt >/dev/null 2>&1; then
sudo apt update
sudo apt install -y build-essential
PACKAGE_MANAGER="apt"
elif command -v pacman >/dev/null 2>&1; then
sudo pacman -Syu --noconfirm
sudo pacman -S --noconfirm base-devel
PACKAGE_MANAGER="pacman"
else
echo "[ERROR] Unsupported package manager"
read -p "[ACTION] Do you still want to continue? (y/N) " -r choice
case "$choice" in
y | Y)
:
;;
*)
echo "[ERROR] Exiting"
exit 1
;;
esac
fi
fi
echo "[INFO] Cloning Dotfiles"
if [ -d "$DOTFILES" ]; then
echo "[INFO] Dotfiles already cloned"
elif [ "$IS_WSL" -eq 1 ]; then
ln -sf "/mnt/c/Users/$WINDOWS_USER/.dotfiles" "$DOTFILES"
elif command -v git >/dev/null 2>&1; then
git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1
else
echo "[ERROR] Git is not installed"
exit 1
fi
if [ "$WHEEL" -eq 0 ]; then
read -p "[ACTION] Do you want to install some AppImages (by AppMan)? (y/N) " -r choice
case "$choice" in
y | Y)
source "$DOTFILES/bootstrap/linux/appman.bash"
;;
*)
echo "[INFO] Skipping AppMan installation"
:
;;
esac
fi
echo "[INFO] Setting up symbolic links"
source "$DOTFILES"/bootstrap/linux/symlinks.bash
set +x
if [ "$WHEEL" -eq 1 ]; then
source "$DOTFILES"/tools/bash/xdg-compat.sh
source "$DOTFILES"/tools/bash/global.bashrc
fi
source "$DOTFILES"/tools/bash/profile
source "$DOTFILES"/tools/bash/bashrc
source "$DOTFILES"/tools/bash/bash_aliases
set -x
if command -v zsh >/dev/null 2>&1; then
read -p "[ACTION] Do you want to setup zsh? (Y/n) " -r choice
case "$choice" in
n | N)
:
;;
*)
source "$DOTFILES"/bootstrap/components/zsh.sh
;;
esac
fi
if [ "$WHEEL" -eq 0 ]; then
echo "Done!"
exit 0
fi
# TODO: Add this part
read -p "[ACTION] Do you want to use other package managers? (y/N) " -r choice
case "$choice" in
y | Y)
:
;;
*)
:
;;
esac
echo "[INFO] Installing Doom Emacs"
source "$DOTFILES"/bootstrap/components/emacs.sh
if [ "$IS_WSL" -eq 1 ]; then
ln -sf "/mnt/c/Users/$WINDOWS_USER" "$HOME/winhome"
ln -sf "/mnt/c/Users/$WINDOWS_USER/Downloads" "$HOME/Downloads"
ln -sf "/mnt/c/Users/$WINDOWS_USER/Documents" "$HOME/Documents"
ln -sf "/mnt/c/Users/$WINDOWS_USER/Desktop" "$HOME/Desktop"
ln -sf "/mnt/c/Users/$WINDOWS_USER/Pictures" "$HOME/Pictures"
ln -sf "/mnt/c/Users/$WINDOWS_USER/Music" "$HOME/Music"
ln -sf "/mnt/c/Users/$WINDOWS_USER/Videos" "$HOME/Videos"
fi
if [ "$GUI_SETUP" -eq 0 ]; then
echo "Done!"
exit 0
fi
# Wayland
source "$DOTFILES"/bootstrap/linux/chromium-flags.bash
# Rime
source "$DOTFILES"/bootstrap/components/rime.sh
echo "[INFO] Installing Color Scheme (Catppuccin Mocha)"
# fish $DOTFILES/bootstrap/temp/mocha_port.fish
source "$DOTFILES"/bootstrap/components/mocha-port.bash
echo "Done!"

View file

@ -1,29 +0,0 @@
#!/usr/bin/env bash
# vim:ft=bash
set -e # Exit immediately if a command exits with a non-zero status
declare -A linkDots
source "$DOTFILES/bootstrap/components/symlinks.bash"
echo "[INFO] DOTFILES = $DOTFILES"
echo "[ACTION] Press any key to proceed"
read -r -n1 -s
echo "[INFO] Setting up symbolic links"
for src in "${!linkDots[@]}"; do
dest="${linkDots[$src]}"
echo "Linking $src to $dest"
if [ -d "$src" ]; then
test -d "$dest" && mv "$dest" "$dest.bak"
ln -sf "$src" "$dest"
elif [ -f "$src" ]; then
dest_parent=$(dirname "$dest")
test -d "$dest_parent" || mkdir -p "$dest_parent"
ln -sf "$src" "$dest"
else
echo "[ERROR] $src does not exist"
fi
done

View file

@ -1 +0,0 @@

View file

@ -1,150 +0,0 @@
tap "daipeihust/tap"
tap "felixkratz/formulae"
tap "homebrew/bundle"
tap "homebrew/services"
tap "koekeishiya/formulae"
tap "nikitabobko/tap"
tap "railwaycat/emacsmacport"
brew "age"
brew "aichat"
brew "bat"
brew "bottom"
brew "broot"
brew "btop"
brew "cmake"
brew "composer"
brew "coreutils"
brew "curlie"
brew "dark-mode"
brew "dos2unix"
brew "duf"
brew "dust"
brew "duti"
brew "fastfetch"
brew "fd"
brew "ffmpeg"
brew "fish"
brew "fzf"
brew "gh"
brew "ghcup"
brew "git-delta"
brew "glow"
brew "go"
brew "hugo"
brew "hyperfine"
brew "imagemagick"
brew "ipython"
brew "julia"
brew "just"
brew "lazygit"
brew "less"
brew "pkgconf"
brew "lua"
brew "librime"
brew "lsd"
brew "luajit"
brew "luarocks"
brew "macvim", link: false
brew "node"
brew "markdownlint-cli"
brew "mas"
brew "neovim"
brew "nowplaying-cli"
brew "nushell"
brew "openjdk@21"
brew "pandoc"
brew "pipx"
brew "pnpm"
brew "procs"
brew "ripgrep"
brew "ripgrep-all"
brew "rlwrap"
brew "rust"
brew "rustup"
brew "screenfetch"
brew "sd"
brew "sevenzip"
brew "speedtest-cli"
brew "starship"
brew "switchaudio-osx"
brew "tldr"
brew "tmux"
brew "tree"
brew "uv"
brew "vim"
brew "wget"
brew "wget2"
brew "yarn"
brew "yazi"
brew "zellij"
brew "zoxide"
brew "daipeihust/tap/im-select"
brew "felixkratz/formulae/borders"
brew "felixkratz/formulae/sketchybar"
brew "koekeishiya/formulae/skhd"
brew "koekeishiya/formulae/yabai"
brew "railwaycat/emacsmacport/emacs-mac"
cask "activitywatch"
cask "alacritty"
cask "alex313031-thorium"
cask "alt-tab"
cask "apparency"
cask "appcleaner"
cask "arc"
cask "betterdisplay"
cask "chatgpt"
cask "discord"
cask "dotnet-sdk"
cask "font-caskaydia-cove-nerd-font"
cask "font-iosevka-nerd-font"
cask "font-jetbrains-mono-nerd-font"
cask "font-lxgw-wenkai"
cask "font-sf-mono"
cask "font-sf-pro"
cask "google-drive"
cask "iina"
cask "iterm2"
cask "jordanbaird-ice"
cask "karabiner-elements"
cask "keka"
cask "keyguard"
cask "kitty"
cask "localsend"
cask "ltspice"
cask "macfuse"
cask "neovide"
cask "obsidian"
cask "onedrive"
cask "orbstack"
cask "powershell"
cask "protonvpn"
cask "qlcolorcode"
cask "qlimagesize"
cask "qlmarkdown"
cask "qlstephen"
cask "qlvideo"
cask "qspace-pro"
cask "quicklook-json"
cask "quicklookase"
cask "r"
cask "raycast"
cask "rider"
cask "rstudio"
cask "rustdesk"
cask "scroll-reverser"
cask "sf-symbols"
cask "sioyek"
cask "skim"
cask "squirrel"
cask "steam"
cask "suspicious-package"
cask "telegram-desktop"
cask "typora"
cask "visual-studio-code"
cask "vivaldi"
cask "warp"
cask "wezterm"
cask "zen-browser"
mas "QQ", id: 451108668
mas "SnippetsLab", id: 1006087419
mas "微信", id: 836500024

View file

@ -1,74 +0,0 @@
#!/bin/zsh
# duti.zsh
# Set default apps (duti)
# The id of the app can be found by running
# `osascript -e 'id of app "AppName"'`
brew install --formula duti
echo "[INFO] Setting Default Apps"
# Define an associative array with file extensions and corresponding app IDs
typeset -A app_defaults
app_defaults=(
# Markdown -> Typora
.md abnerworks.Typora
.markdown abnerworks.Typora
# PDF -> Sioyek
.pdf info.sioyek.sioyek
# Raw Text -> Neovide
.txt com.neovide.neovide
# Archive -> Keka
.zip com.aone.keka
.rar com.aone.keka
.7z com.aone.keka
.tar com.aone.keka
# Source Code Light -> Neovim
.gitignore com.neovide.neovide
.vimrc com.neovide.neovide
.vim com.neovide.neovide
.lua com.neovide.neovide
.py com.neovide.neovide
.jl com.neovide.neovide
.sh com.neovide.neovide
.c com.neovide.neovide
# Source Code DOTNET -> VSCode
.cs com.microsoft.VSCode
.fs com.microsoft.VSCode
.fsx com.microsoft.VSCode
.csx com.microsoft.VSCode
.ps1 com.microsoft.VSCode
# Source Code Web -> VSCode
.js com.microsoft.VSCode
.ts com.microsoft.VSCode
.jsx com.microsoft.VSCode
.tsx com.microsoft.VSCode
.css com.microsoft.VSCode
.scss com.microsoft.VSCode
.sass com.microsoft.VSCode
.vue com.microsoft.VSCode
# Source Code Config -> Neovim
.json com.neovide.neovide
.yaml com.neovide.neovide
.yml com.neovide.neovide
.toml com.neovide.neovide
.ini com.neovide.neovide
.cfg com.neovide.neovide
.conf com.neovide.neovide
.kdl com.neovide.neovide
.xml com.neovide.neovide
# Source Code Jupyter -> VSCode
.ipynb com.microsoft.VSCode
# Source Code DotNet Project -> Rider
.sln com.jetbrains.rider
.csproj com.jetbrains.rider
.fsproj com.jetbrains.rider
# Video -> IINA
.mp4 com.colliderli.iina
.mkv com.colliderli.iina
)
# Loop through the array and set the default apps
for ext app_id in ${(kv)app_defaults}; do
duti -s $app_id $ext all
done
unset app_defaults

View file

@ -1,106 +0,0 @@
#! /bin/zsh
echo "Running the setup script"
set -e
set -x
# VARIABLES
export DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
# In macOS, consider the user as sudoer by default
export WHEEL=1
export GUI_SETUP=1
# Xcode Command Line Tools
echo "[INFO] Installing Xcode Command Line Tools"
echo "[ACTION] Request Human Takeover"
xcode-select --install
# Press any key to continue (if Xcode Command Line Tools are installed)
echo "[ACTION] Press any key to continue when xcode CLI tools are installed"
read -n 1
# System Preferences
# Installation Sources
echo "[INFO] Setting Installation Sources"
echo "[ACTION] Request Human Takeover"
echo "In macOS Sequoia, setup manually (System preferences -> Security & Privacy -> General -> Allow apps downloaded from: Anywhere)"
# sudo spctl --master-disable
# In Mac OS Sequoia, the command above is not working
# Should be set up manually (System Preferences -> Security & Privacy -> General -> Allow apps downloaded from: Anywhere)
echo "[INFO] Installing Homebrew"
echo "[ACTION] Request Human Input"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo "[ACTION] Press any key to continue when xcode CLI tools are installed"
read -n 1
echo "[INFO] Cloning Dotfiles"
git clone https://github.com/js0ny/dotfiles.git $DOTFILES
echo "[INFO] Setting up system properties"
source $DOTFILES/bootstrap/macOS/plist.zsh
read -p "[ACTION] Do you want to use sudo with touch ID? (Y/n) " -r choice
case "$choice" in
n | N)
:
;;
*)
# Use `sudo cp` to prevent losing sudo access
sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.bak
sudo cp $DOTFILES/platforms/mac/etc/pam.d/sudo /etc/pam.d/sudo
;;
esac
echo "[INFO] Installing Homebrew Packages"
# Load Brewfile
eval "$(/opt/homebrew/bin/brew shellenv)"
brew bundle --file=$DOTFILES/bootstrap/macOS/Brewfile
# Setting up emacs
ln -s /usr/local/opt/emacs-mac/Emacs.app /Applications/Emacs.app
# Setting Default Apps
source $DOTFILES/bootstrap/macOS/duti.zsh
# Setting up Dotfiles
source $DOTFILES/bootstrap/macOS/symlinks.zsh
source $DOTFILES/bootstrap/components/zsh.sh
source $DOTFILES/tools/zsh/global.zshenv
source $DOTFILES/tools/zsh/zshenv
source $DOTFILES/tools/zsh/zshrc
# Rime
source $DOTFILES/bootstrap/components/rime.sh
echo "[INFO] Installing Doom Emacs"
source $DOTFILES/bootstrap/components/emacs.sh
echo "[INFO] Installing Color Scheme (Catppuccin Mocha)"
bash $DOTFILES/bootstrap/components/mocha-port.bash
# Misc
dotnet tool install --global dotnet-repl
pnpm install -g typescript
pnpm install -g tsx
echo "Done! For additional setup, boot to recovery mode and run the following command:"
echo "csrutil enable --without fs --without debug --without nvram"
echo "Then, reboot the system"
echo "Run the post-install script to finish the setup"

View file

@ -1,37 +0,0 @@
## Finder
echo "[INFO] Setting Finder Preferences"
defaults write com.apple.finder QuitMenuItem -bool true # Quit with CMD+Q
defaults write com.apple.finder ShowPathbar -bool true # Show Path Bar
defaults write com.apple.finder ShowStatusBar -bool true # Show Status Bar
defaults write NSGlobalDomain AppleShowAllExtensions -bool true # Show All File Extensions
defaults write com.apple.finder AppleShowAllFiles -bool true # Show Hidden Files
defaults write com.apple.finder _FXSortFoldersFirst -bool true
defaults write com.apple.finder FinderSpawnTab -bool true
# Don't show External Hard Drives on Desktop
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowMountedServersOnDesktop -bool false
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool false
# No DS_Store on Network
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
# Keyboard
# Disable Accent Menu
defaults write NSGlobalDomain ApplePressAndHoldEnabled -boolean false
killall Finder
killall Dock
## Dock
echo "[INFO] Setting Dock Preferences"
defaults write com.apple.dock persistent-apps -array
defaults write com.apple.dock persistent-others -array
defaults write com.apple.dock autohide -bool true # Autohide Dock
defaults write com.apple.dock autohide-time-modifier -float 0.5
defaults write com.apple.dock autohide-delay -float 0 # Immediately Autohide Dock
defaults write com.apple.dock show-recents -bool false # Hide Recent Applications
killall Dock
## Trackpad
echo "[INFO] Setting Trackpad Preferences"
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerDrag -bool true
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerDrag -bool true
defaults write com.apple.AppleMultitouchTrackpad Clicking -bool true
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults write -g NSWindowShouldDragOnGesture -bool true

View file

@ -1,29 +0,0 @@
set -e # Exit immediately if a command exits with a non-zero status
# 声明为关联数组
typeset -A linkDots
# 从通用配置文件加载
source "$DOTFILES/bootstrap/components/symlinks.bash"
echo "[INFO] DOTFILES = $DOTFILES"
echo "[ACTION] Press any key to proceed"
read -r -n1
echo "[INFO] Setting up symbolic links"
# 使用 zsh 的关联数组语法
for src in ${(k)linkDots}; do
dest="${linkDots[$src]}"
echo "Linking $src to $dest"
if [ -d "$src" ]; then
test -d $dest && mv $dest $dest.bak
ln -sf $src $dest
elif [ -f "$src" ]; then
dest_parent=$(dirname $dest)
test -d $dest_parent || mkdir -p $dest_parent
ln -sf $src $dest
else
echo "[ERROR] $src does not exist"
fi
done

View file

@ -1,223 +0,0 @@
#Requires -RunAsAdministrator
# TODO: This file is under development
exit 1
$DOTFILES = if ($Env:DOTFILES) { $Env:DOTFILES } else { Join-Path "$Env:USERPROFILE" "dotfiles" }
New-Item -ItemType Directory -Path (Join-Path $Env:UserProfile "Temp") -Force
winget install -e --id Git.Git
if (Get-Command git -ErrorAction SilentlyContinue) {
git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1
}
else {
Write-Output "[ERROR] Git is not installed"
exit 1
}
# Install scoop
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
# Inline `sudo`
sudo sudo config --enable normal
$BOOTSTRAP = Join-Path $DOTFILES "bootstrap" "win"
. (Join-Path $BOOTSTRAP "Environment.ps1")
. (Join-Path $BOOTSTRAP "Registry.ps1")
. (Join-Path $BOOTSTRAP "Symlinks.ps1")
scoop import (Join-Path $BOOTSTRAP "Scoopfile.json")
# Rime
$RIMEDIR = Join-Path $Env:AppData "Rime"
git clone --depth 1 https://github.com/js0ny/rime_wanxiang_pro.git $RIMEDIR
Set-Location $RIMEDIR
just init
just clone_plum
# The section below not done yet
exit 1
#!C:\Program Files\WindowsApps\Microsoft.PowerShell_7.4.6.0_x64__8wekyb3d8bbwe\pwsh.EXE
# Run with PowerShell 7
winget install -e --id Git.Git
git clone https://github.com/js0ny/dotfiles.git ~\.dotfiles
Set-Location -Path ~\.dotfiles
Remove-Item -Force $PROFILE
$DOTFILES = "$HOME\.dotfiles"
New-Item -ItemType SymbolicLink -Path $PROFILE -Target "$DOTFILES\win\Microsoft.PowerShell_profile.ps1"
. $PROFILE
# Install Scoop
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
# Install Chocolatey
# Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Set Dotfiles
# $DOTFILES\.config
$folders = @("conda", "git", "ideavim", "ipython", "markdownlint", "npm", "NuGet", "nvim", "pip", "Vim")
foreach ($folder in $folders) {
New-Item -ItemType Directory -Path "$Env:XDG_CONFIG_HOME\$folder" -Force
}
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\conda\.condarc" -Target "$DOTFILES\.config\conda\condarc.yaml" -Force
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\git\config" -Target "$DOTFILES\.config\git\.gitconfig" -Force
New-Item -ItemType SymbolicLink -Path "~\.haskeline" -Target "$DOTFILES\.haskeline" -Force
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\ideavim\.ideavimrc" -Target "$DOTFILES\.config\ideavim\.ideavimrc" -Force
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\ipython" -Target "$DOTFILES\.config\ipython" -Force
# New-Item -ItemType SymbolicLink -Path "~\.markdownlint.json" -Target "$DOTFILES\.markdownlint.json" -Force
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\npm\npmrc" -Target "$DOTFILES\.config\npm\npmrc" -Force
New-Item -ItemType SymbolicLink -Path "$Env:AppData\NuGet\NuGet.Config" -Target "$DOTFILES\.config\NuGet\NuGet.Config" -Force
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\nvim" -Target "$DOTFILES\.config\nvim" -Force
New-Item -ItemType SymbolicLink -Path "$Env:AppData\pip\pip.ini" -Target "$DOTFILES\.config\pip\pip.conf" -Force
New-Item -ItemType SymbolicLink -Path "$Env:XDG_CONFIG_HOME\Vim\_vimrc" -Target "$DOTFILES\.config\vim\vimrc" -Force
New-Item -ItemType SymbolicLink -Path "~\.wslconfig" -Target "$DOTFILES\win\.wslconfig" -Force
New-Item -ItemType SymbolicLink -Path "$Env:AppData\neovide\config.toml" -Target "$DOTFILES\win\neovide.toml" -Force
# New-Item -ItemType SymbolicLink -Path "~\.vscode.vimrc" -Target "$DOTFILES\vscode\vscode.vimrc" Use Absolute Path
# Hide dotfiles
Get-ChildItem -Force -Filter .* -Path $HOME | ForEach-Object { $_.Attributes += "Hidden" }
@(
Join-Path $HOME '.config'
Join-Path $HOME '.dotfiles'
) | ForEach-Object {
$_.Attributes -band -bnot [System.IO.FileAttributes]::Hidden
}
Set-Location $HOME\Documents
# Match WindowsPowerShell and PowerShell
Get-ChildItem -Force -Filter *owerShell | ForEach-Object { $_.Attributes += "Hidden" }
# Windows Terminal
if (Get-Command wt -ErrorAction SilentlyContinue) {
Write-Output "Windows Terminal (wt) installed"
}
else {
winget install -e --id Microsoft.WindowsTerminal
}
# Uninstall Windows Apps
Get-AppxPackage *solit* | Remove-AppxPackage # 纸牌
Get-AppxPackage *sound* | Remove-AppxPackage # 錄音機
Get-AppxPackage *camera* | Remove-AppxPackage # 相機
Get-AppxPackage *weather* | Remove-AppxPackage # 天氣
Get-AppxPackage *Map* | Remove-AppxPackage # 地圖
# Get-AppxPackage *clipchamp* | Remove-AppxPackage # 其實這個還行
# Added Packages
scoop bucket add main
scoop bucket add nerd-fonts
scoop bucket add extras
scoop bucket add nonportable
# CLI Tools
# winget install -e --id GnuWin32.Grep # Use Select-String instead
scoop install main/make
# winget install -e --id GnuWin32.Which # Use Get-Command instead
scoop install main/fzf
scoop install main/ripgrep
scoop install main/wget
scoop install main/wget2
scoop install main/cmake
scoop install main/bat # modern cat
scoop install main/zoxide # Directory Jump
scoop install main/dos2unix # Convert line endings
scoop install main/hyperfine # Benchmark
scoop install main/bottom # System Monitor
scoop install main/delta # diff
scoop install extras/gpg4win
# File Management
scoop install extras/everything
scoop install main/7zip
scoop install extras/bandizip
scoop install main/pandoc
scoop install extras/sumatrapdf
winget install -e --id Google.GoogleDrive
sudo scoop install nonportable/winbtrfs-np
# System Enhancements
scoop install extras/fancontrol
scoop install extras/powertoys
scoop install extras/msiafterburner
winget install -e --id Yuanli.uTools
scoop install extras/geekuninstaller
scoop install extras/flow-launcher
# winget install -e --id AutoHotkey.AutoHotkey
scoop install extras/autohotkey
scoop install nonportable/mactype-np
scoop install extras/diskgenius
# winget install -e --id Nilesoft.Shell
# scoop install umi-ocr-paddle
# Editor
scoop install main/vim
scoop install main/neovim
scoop install extras/vscodium
scoop install extras/vscode
scoop install extras/neovide
# Security
scoop bucket add keyguard https://github.com/AChep/keyguard-repo-scoop
scoop install keyguard/keyguard
# PKM
scoop install extras/obsidian
winget install -e --id 9P7HPMXP73K4 # Siyuan
scoop install extras/typora
scoop install extras/zotero
scoop install extras/anki
# winget install -e --id Notion.Notion
# Browser
# Use Microsoft Edge directly
# winget install -e --id TheBrowserCompany.Arc
# winget install -e --id Mozilla.Firefox.Nightly # Not working
# Programming Languages
winget install -e --id Python.Python.3.13
winget install -e --id Anaconda.Miniconda3
winget install -e --id OpenJS.NodeJS
winget install -e --id Rustlang.Rustup
winget install -e --id Microsoft.DotNet.SDK.9
# Dev
scoop install extras/docker
scoop install extras/lazygit
# IDE
scoop install extras/rider
# Gaming
winget install -e --id Valve.Steam
# IME
winget install -e --id Rime.Weasel # 小狼毫 Rime
# Misc
winget install -e --id 9N5LW3JBCXKF --source msstore # MSIX Packaging Tool
winget install -e --id 9PKTQ5699M62 --source msstore # iCloud
winget install -e --id RazerInc.RazerInstaller # Razer Synapse
# Social
winget install -e --id 9N97ZCKPD60Q --source msstore # Unigram (Telegram client)
winget install -e --id Tencent.QQ.NT
winget install -e --id XPFCKBRNFZQ62G --source msstore # WeChat in Windows Store (MSIX)
# Others
winget install -e --id Appest.TickTick
winget install -e --id 9NBLGGH4Z1SP --source msstore # ShareX (screen capture)
# Fonts
scoop install FiraCode-NF
scoop install CascadiaCode-NF
scoop install LXGWWenKai # 霞鹜文楷
scoop install LXGWWenKaiMono # 霞鹜文楷Mono
# WSL
scoop install archwsl
wsl --set-version Arch 1

View file

@ -1,28 +0,0 @@
#!/usr/bin/env bash
# shellcheck disable=SC1090 shell=sh
# Date: 2025-02-11
# Author: js0ny
# IMPORTANT: The default `bash` in macOS is outdated, run with zsh or install the latest `bash` via Homebrew
# If you are macOS, run `xcode select --install` first
set -o errexit
set -o xtrace
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
mkdir -p ~/.local/.tmp
export DOTFILES
case "$(uname)" in
Linux)
curl https://raw.githubusercontent.com/js0ny/dotfiles/refs/heads/master/bootstrap/linux/main.bash -o ~/.local/.tmp/main.bash
source ~/.local/.tmp/main.bash
rm -rf ~/.local/.tmp/main.bash
;;
Darwin)
curl https://raw.githubusercontent.com/js0ny/dotfiles/refs/heads/master/bootstrap/macOS/main.zsh -o ~/.local/.tmp/main.zsh
zsh ~/.local/.tmp/main.zsh
rm -rf ~/.local/.tmp/main.zsh
;;
esac

View file

@ -1,23 +0,0 @@
#Requires -RunAsAdministrator
Set-MpPreference -EnableControlledFolderAccess 1
$protected = (Get-MpPreference).ControlledFolderAccessProtectedFolders
$protected += "$Env:UserProfile\.ssh"
$protected += "$Env:UserProfile\.config"
$protected += "$Env:UserProfile\Vault"
Set-MpPreference -ControlledFolderAccessProtectedFolders $protected
$apps = (Get-MpPreference).ControlledFolderAccessAllowedApplications
$apps += "$Env:Windir\System32\OpenSSH\ssh.exe"
$apps += "$Env:ProgramFiles\GPSoftware\Directory Opus\DOpus.exe"
$apps += (Get-Command -Name code).Source.Replace("bin\code.cmd", "Code.exe")
$apps += (Get-Command -Name pwsh).Source
$apps += (Get-Command -Name git).Source
Set-MpPreference -ControlledFolderAccessAllowedApplications $apps
$exclusion = (Get-MpPreference).ExclusionPath
$exclusion += "$env:ProgramFiles\JetBrains"
$exclusion += "$env:LocalAppData\JetBrains"
$exclusion += "D:\Source"
Set-MpPreference -ExclusionPath $exclusion

View file

@ -1,93 +0,0 @@
# Set Environment Variables
# Use %PATH_EXT% to prevent PATH from being too long
[System.Environment]::SetEnvironmentVariable("Path_EXT_0", "D:\bin", "User")
[System.Environment]::SetEnvironmentVariable("Path_EXT_0", "C:\Users\jsony\AppData\Local\Cargo\bin", "User")
[System.Environment]::SetEnvironmentVariable("Path_EXT_1", "C:\Users\jsony\AppData\Local\Go\bin", "User")
[System.Environment]::SetEnvironmentVariable("Path_EXT_2", "C:\Users\jsony\AppData\Local\Cargo\bin", "User")
$currentPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
if ($currentPath -notlike "*%PATH_EXT%*") {
$currentPath += ";%PATH_EXT_0%;%PATH_EXT_1%;%PATH_EXT_2%"
}
[System.Environment]::SetEnvironmentVariable("Path", $currentPath, "User")
[System.Environment]::SetEnvironmentVariable("PATH_EXT_0", "", [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable("PATH_EXT_1", "", [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable("PATH_EXT_2", "", [System.EnvironmentVariableTarget]::Machine)
$currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
if ($currentPath -notlike "*%PATH_EXT%*") {
$currentPath += ";%PATH_EXT_0%;%PATH_EXT_1%;%PATH_EXT_2%"
}
[System.Environment]::SetEnvironmentVariable("Path", $currentPath, [System.EnvironmentVariableTarget]::Machine)
# Simulate XDG Base Directory Specification
$Env:XDG_CONFIG_HOME = "$Env:AppData"
$Env:XDG_DATA_HOME = "$Env:LocalAppData"
$Env:XDG_CACHE_HOME = "$Env:LocalAppData\Cache"
$Env:XDG_STATE_HOME = "$Env:LocalAppData\State"
[System.Environment]::SetEnvironmentVariable("XDG_CONFIG_HOME", "$Env:XDG_CONFIG_HOME", "User")
[System.Environment]::SetEnvironmentVariable("XDG_DATA_HOME", "$Env:XDG_DATA_HOME", "User")
New-Item -ItemType Directory -Path "$Env:LocalAppData\cache" -Force
[System.Environment]::SetEnvironmentVariable("XDG_CACHE_HOME", "$Env:XDG_CACHE_HOME", "User")
New-Item -ItemType Directory -Path "$Env:LocalAppData\state" -Force
[System.Environment]::SetEnvironmentVariable("XDG_STATE_HOME", "$Env:XDG_STATE_HOME", "User")
# Add environment variables
[System.Environment]::SetEnvironmentVariable("DOTFILES", "$DOTFILES", "User")
# Set potential environment variables to prevent softwares put their configs in the wrong place
# eg. dotfiles in %UserProfile%
# ~\.aws -> %AppData%\aws :: AWS CLI
New-Item -ItemType Directory -Path "$Env:AppData\aws" -Force
[System.Environment]::SetEnvironmentVariable("AWS_CONFIG_FILE", "$Env:AppData\aws\config", "User")
[System.Environment]::SetEnvironmentVariable("AWS_SHARED_CREDENTIALS_FILE", "$Env:AppData\aws\credentials", "User")
# ~\.azure -> %LocalAppData%\Azure :: Azure CLIcargo install --list
[System.Environment]::SetEnvironmentVariable("AZURE_CONFIG_DIR", "$Env:LocalAppData\Azure", "User")
# ~\.cargo -> %LocalAppData%\Cargo :: Rust https://doc.rust-lang.org/cargo/guide/cargo-home.html
[System.Environment]::SetEnvironmentVariable("CARGO_HOME", "$Env:LocalAppData\Cargo", "User")
# ~\.docker -> %AppData%\dotDocker :: Docker (Docker takes %AppData%\Docker, use dotDocker instead)
[System.Environment]::SetEnvironmentVariable("DOCKER_CONFIG", "$Env:AppData\dotDocker", "User")
# ~\.dotnet -> %LocalAppData%\dotNET :: .NET Core
[System.Environment]::SetEnvironmentVariable("DOTNET_CLI_HOME", "$Env:LocalAppData\dotNET", "User")
# ~\.emacs.d -> %AppData%\.emacs.d :: Emacs (This is default)
# [System.Environment]::SetEnvironmentVariable("EMACS_HOME", "$Env:AppData\emacs.d", "User")
# ~\go -> %LocalAppData%\GO :: golang
[System.Environment]::SetEnvironmentVariable("GOPATH", "$Env:LocalAppData\GO", "User")
# ~\.ipython -> %AppData%\ipython :: IPython
# IPython won't check XDG on Windows https://github.com/ipython/ipython/blob/0615526f80691452f2e282c363bce197c0141561/IPython/utils/path.py#L200
[System.Environment]::SetEnvironmentVariable("IPYTHONDIR", "$Env:AppData\ipython", "User")
# ~\.julia -> %LocalAppData%\julia :: Julia
[System.Environment]::SetEnvironmentVariable("JULIA_DEPOT_PATH", "$Env:LocalAppData\julia", "User")
# ~\_lesshst -> %LocalAppData%\state\lesshst :: less
[System.Environment]::SetEnvironmentVariable("LESSHISTFILE", "$Env:XDG_STATE_HOME\lesshst", "User")
# %AppData%\less\lesskey :: less
New-Item -ItemType Directory -Path "$Env:AppData\less" -Force
[System.Environment]::SetEnvironmentVariable("LESSKEYIN", "$Env:AppData\less\lesskey", "User")
# ~\.matplotlib -> %LocalAppData%\matplotlib :: Matplotlib
[System.Environment]::SetEnvironmentVariable("MPLCONFIGDIR", "$Env:LocalAppData\matplotlib", "User")
# ~\.npmrc -> %AppData%\npm\npmrc :: npm
[System.Environment]::SetEnvironmentVariable("NPM_CONFIG_USERCONFIG", "$Env:AppData\npm\npmrc", "User")
# ~\.node_repl_history -> %LocalAppData%\state\node\repl_history :: Node.js
New-Item -ItemType Directory -Path "$Env:XDG_STATE_HOME\node" -Force
[System.Environment]::SetEnvironmentVariable("NODE_REPL_HISTORY", "$Env:XDG_STATE_HOME\node\repl_history", "User")
# ~\.ts_node_repl_history -> %LocalAppData%\state\node\ts_node_repl_history :: Node.js
# NOTE: ts-node doesn't support this yet
# [System.Environment]::SetEnvironmentVariable("TS_NODE_REPL_HISTORY", "$Env:XDG_STATE_HOME\node\ts_node_repl_history", "User")
# ~\.nuget\packages -> %LocalAppData%\cache\NuGet\packages :: NuGet
[System.Environment]::SetEnvironmentVariable("NUGET_PACKAGES", "$Env:XDG_CACHE_HOME\NuGet\packages", "User")
# ~\.omnisharp -> %AppData%\OmniSharp :: OmniSharp
[System.Environment]::SetEnvironmentVariable("OMNISHARPHOME", "$Env:AppData\OmniSharp", "User")
# ~\.python_history -> %LocalAppData%\state\python\python_history :: Python
# Only works for Python 3.13+ https://docs.python.org/3.13/using/cmdline.html#envvar-PYTHON_HISTORY
New-Item -ItemType Directory -Path "$Env:XDG_STATE_HOME\python" -Force
[System.Environment]::SetEnvironmentVariable("PYTHON_HISTORY", "$Env:XDG_STATE_HOME\python\python_history", "User")
# ~\.rustup -> %LocalAppData%\Rustup :: Rust
[System.Environment]::SetEnvironmentVariable("RUSTUP_HOME", "$Env:LocalAppData\Rustup", "User")
# ~\.vimrc -> %AppData%\Vim\_vimrc :: Vim
New-Item -ItemType Directory -Path "$Env:AppData\Vim" -Force
[System.Environment]::SetEnvironmentVariable("VIM", "$Env:AppData\Vim", "User")
[System.Environment]::SetEnvironmentVariable("KOMOREBI_CONFIG_HOME", "$Env:AppData\komorebi", "User")
# ~\.vuerc -> %AppData%\vue\.vuerc :: Vue CLI
# Currently, Vue CLI doesn't support file path configuration:https://github.com/vuejs/vue-cli/blob/dev/packages/%40vue/cli/lib/confifile
# [System.Environment]::SetEnvironmentVariable("VUE_CLI_CONFIG_PATH", "$Env:AppData\vue\.vuerc", "User")
# ~\.wget-hsts -> %LocalAppData%\cache\wget-hsts :: wget
# Use Alias, wget host file path is not configurable
# ~\.yarnrc -> %AppData%\yarn\config.yaml :: Yarn v1
# Use Alias, yarnrc path is not configurable
# Reload required here to make sure the environment variables are set

View file

@ -1,11 +0,0 @@
# Disable StickyKeys
REG ADD "HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys" /v "Flags" /t REG_SZ /d "506" /f
# Disable Hyper+Keys to open Office apps
REG ADD HKCU\Software\Classes\ms-officeapp\Shell\Open\Command /t REG_SZ /d rundll32
# Disable DOS 8.3 file name creation
sudo fsutil 8dot3name set 1
# Delete all known DOS 8.3 file name
fsutil 8dot3name strip /s /v C:\

View file

@ -1,21 +0,0 @@
#Requires -RunAsAdministrator
Write-Output "[INFO] Setting up KMonad Tasks"
# PowerShell Path, use 7 if available
if (Get-Command "pwsh" -ErrorAction SilentlyContinue) {
$PowerShellPath = (Get-Command "pwsh").Source
}
else {
$PowerShellPath = (Get-Command "powershell").Source
}
$DotStartUpPath = "$Env:DOTFILES\platforms\win\start"
$KMonadRunnerPath = Join-Path $DotStartUpPath "KMonad.ps1"
$Action = New-ScheduledTaskAction -Execute $PowerShellPath -Argument "-NoProfile -ExecutionPolicy Bypass -File $KMonadRunnerPath"
$Trigger = New-ScheduledTaskTrigger -AtLogOn
$Principal = New-ScheduledTaskPrincipal -UserId "$env:USERNAME" -LogonType Interactive -RunLevel Highest
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -Hidden
Register-ScheduledTask -TaskName "Start Kmonad" -Action $Action -Trigger $Trigger -Principal $Principal -Settings $Settings -TaskPath "\Personal"

View file

@ -1,78 +0,0 @@
# $DOTFILES\bootstrap\set_symlink_win.ps1
# Date: 2024-12-01
# Author: js0ny
# Set symlinks for dotfiles on Windows
# 在 Windows 上设置 配置文件的符号链接
# Run this with Administrator privileges
$DOTFILES = Join-Path $Env:UserProfile ".dotfiles"
$BASE_COMMON = Join-Path $DOTFILES "common"
$BASE_TOOLS = Join-Path $DOTFILES "tools"
$BASE_WIN = Join-Path $DOTFILES "platforms" "win"
$STARTUP = [System.Environment]::GetFolderPath("Startup")
$BAT_CONF = Join-Path $Env:AppData "bat" "config"
if ((Get-Command bat).Source -ccontains "scoop") {
$BAT_CONF = Join-Path (scoop prefix bat) "config"
}
$SIOYEKDIR = scoop prefix sioyek
$SIOYEKCFG = Get-ChildItem "$BASE_TOOLS\sioyek" -Filter "*.config"
foreach ($cfg in $SIOYEKCFG) {
$cfgName = $cfg.Name
$cfgPath = Join-Path $SIOYEKDIR $cfgName
New-Item -ItemType SymbolicLink -Target $cfg -Path $cfgPath -Force
}
$linkDots = @{
"$BASE_WIN\wslconfig" = "$Env:UserProfile\.wslconfig"
"$BASE_WIN\glzr" = "$Env:UserProfile\.glzr"
"$BASE_WIN\neovide.toml" = "$Env:AppData\neovide\config.toml"
"$BASE_WIN\vsvimrc" = "$Env:UserProfile\.vsvimrc"
"$BASE_COMMON\bat.config" = "$BAT_CONF"
"$BASE_COMMON\condarc.yaml" = "$Env:XDG_CONFIG_HOME\conda\.condarc"
"$BASE_COMMON\glow.yaml" = "$Env:AppData\glow\glow.yml"
"$BASE_COMMON\haskeline" = "$Env:UserProfile\.haskeline"
"$BASE_COMMON\ideavimrc" = "$Env:XDG_CONFIG_HOME\ideavim\ideavimrc"
"$BASE_COMMON\lazygit.yaml" = "$Env:AppData\lazygit\config.yml"
"$BASE_COMMON\lesskey" = "$Env:LessKeyIn"
"$BASE_COMMON\lsd" = "$Env:AppData\lsd\config.yaml"
"$BASE_COMMON\npmrc" = "$Env:NPM_CONFIG_USERCONFIG"
"$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config"
"$BASE_COMMON\starship.toml" = "$Env:UserProfile\.config\starship.toml"
"$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini"
"$BASE_COMMON\vimrc.noxdg.vimrc" = "$Env:UserProfile\_vimrc"
"$BASE_COMMON\emacs.d" = "$Env:AppData\.emacs.d"
"$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR"
"$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim"
"$BASE_TOOLS\wezterm" = "$Env:XDG_CONFIG_HOME\wezterm"
"$BASE_TOOLS\yazi" = "$Env:AppData\yazi\config"
"$BASE_TOOLS\zed" = "$Env:AppData\Zed"
}
foreach ($src in $linkDots.Keys) {
$dest = $linkDots[$src]
# Auto create directories (Untested)
if (Test-Path -Path $src -PathType Container) {
New-Item -ItemType Directory -Path $dest -Force
}
else {
$Local:destParent = Split-Path -Path $dest -Parent
New-Item -ItemType Directory -Path $destParent -Force
}
if (Test-Path -Path $dest) {
Move-Item $dest "$dest.bak" -Force
}
New-Item -ItemType SymbolicLink -Target $src -Path $dest -Force
}
New-Item -ItemType SymbolicLink -Target "$BASE_WIN\Microsoft.PowerShell_profile.ps1" -Path "$Env:UserProfile\Documents\PowerShell\Microsoft.PowerShell_profile.ps1" -Force
Copy-Item (Join-Path $BASE_WIN "ahk" "bin" "Caps.exe") $STARTUP
Copy-Item (Join-Path $BASE_COMMON "gitconfig") $Env:UserProfile

View file

@ -0,0 +1,13 @@
;;; -*- lexical-binding: t -*-
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(auth-source-save-behavior nil))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

View file

View file

View file

@ -0,0 +1,39 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:normal
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
SETUVAR fish_color_selection:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_pager_color_background:\x1d
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan\x1e\x2d\x2dbold
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/js0ny/\x2elocal/bin\x1e/home/js0ny/\x2elocal/build\x1e/usr/bin\x1e/usr/local/bin

View file

@ -0,0 +1,53 @@
{
"LuaSnip": { "branch": "master", "commit": "de10d8414235b0a8cabfeba60d07c24304e71f5c" },
"auto-session": { "branch": "main", "commit": "7d37d1cae7a39ff57da9a452d21b5dbfc5636c18" },
"avante.nvim": { "branch": "main", "commit": "2791db9984d01674c3a507cc1a522ad7234f400a" },
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"bullets.vim": { "branch": "master", "commit": "1c13e510e11d08b0259e8e627f128359c5521962" },
"catppuccin": { "branch": "main", "commit": "30fa4d122d9b22ad8b2e0ab1b533c8c26c4dde86" },
"conform.nvim": { "branch": "master", "commit": "a0ab60ed666c56b37fd7ed1847d2ac52f2482ce0" },
"copilot.lua": { "branch": "master", "commit": "f0c0d981de2737abc50bd7b5bb034ae440826827" },
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
"fzf-lua": { "branch": "main", "commit": "7d66cd81cf485fb17c22d82021cc166ce332a14c" },
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
"grug-far.nvim": { "branch": "main", "commit": "385d1949dc21d0c39e7a74b4f4a25da18817bc86" },
"image.nvim": { "branch": "master", "commit": "5cbb891eb8dde53f350dde69e23106d4e85d898b" },
"img-clip.nvim": { "branch": "main", "commit": "d8b6b030672f9f551a0e3526347699985a779d93" },
"kanagawa.nvim": { "branch": "master", "commit": "debe91547d7fb1eef34ce26a5106f277fbfdd109" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
"leetcode.nvim": { "branch": "master", "commit": "422b6beb4a64eca0524fbff94edd9550c156afc5" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"luasnip-latex-snippets.nvim": { "branch": "main", "commit": "d3dd5223ef37a99c4adf3b5c7844fc760751b397" },
"multiple-cursors.nvim": { "branch": "main", "commit": "1ac15d047a4b265cc2389957bcc56ee561b29e02" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "cea666ef965884414b1b71f6b39a537f9238bdb2" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-dap": { "branch": "master", "commit": "968f89f8aac11b6bdbfc942c71d3436658c1435f" },
"nvim-dap-python": { "branch": "master", "commit": "bd771691da93846b0fc7e095512146a150218bfd" },
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-surround": { "branch": "main", "commit": "d56752df477ebd808cb82cea2fc68cf7455abb21" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-context": { "branch": "master", "commit": "dca8726fea2c14e1ce6adbaa76a04816fbfaff61" },
"nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" },
"obsidian.nvim": { "branch": "main", "commit": "705cc9b4f66eca1e54040ac819102e80a32896d3" },
"org-bullets.nvim": { "branch": "main", "commit": "21437cfa99c70f2c18977bffd423f912a7b832ea" },
"orgmode": { "branch": "master", "commit": "b924cbb7e9c5f2c34f84d92e49dc76e01f32cad9" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"render-markdown.nvim": { "branch": "main", "commit": "8074a9cc9a6f737320b7a0d76b2c4c3485155688" },
"rose-pine": { "branch": "main", "commit": "72befaffeac38db7bdd49e0549eaa2c4806dd878" },
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
"toggleterm.nvim": { "branch": "main", "commit": "9a88eae817ef395952e08650b3283726786fb5fb" },
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
"typst-preview.nvim": { "branch": "master", "commit": "dea4525d5420b7c32eebda7de15a6beb9d6574fa" },
"vim-beancount": { "branch": "master", "commit": "589a4f06f3b2fd7cd2356c2ef1dafadf6b7a97cf" },
"vim-just": { "branch": "main", "commit": "04b0f122f14c83f55a0f8bb2a087754dc98cdccc" },
"vim-wakatime": { "branch": "master", "commit": "3403495670f0ee08887401a28f8430dc4ac67429" },
"vimtex": { "branch": "master", "commit": "dc90feacb86f7b85b0b791d8073eefc769a23725" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}

Some files were not shown because too many files have changed in this diff Show more