refactor: migrate from shell-based sync to mise dotfiles management

- Replace sync-config/sync-script with mise.toml [dotfiles] directives
- Convert installer scripts to mise tasks (shells, desktop, theme, webapps)
- Remove config/nvim-old (deprecated neovim config)
- Add omarchy theme system with multi-app configs (btop, hyprland, kitty, foot, tmux, etc.)
- Move SSH hosts to config.d/* include pattern
- Add Tera templates for dynamic config generation (git-local, dofiles.conf)
- Update pi agent settings (0.80.10, packages list)
- Add mise tasks for pi plugin setup and nvim tooling
This commit is contained in:
2026-07-18 06:11:59 +00:00
parent 8cf32cbb88
commit 156b7261db
102 changed files with 1124 additions and 4465 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/sh -e
pacman -Sy --noconfirm networkmanager
sudo pacman -Sy --noconfirm networkmanager
if [[ -x "$(command -v systemctl)" ]]; then
sudo systemctl enable --now NetworkManager.service
+1 -3
View File
@@ -2,14 +2,12 @@
# SjB TODO:
# - install public keys
sudo pacman -Syu --noconfirm
if [[ "$(uname -m)" == "x86_64" ]]; then
if ! pacman-key --list-keys 882DCFE48E2051D48E2562ABF3B607488DB35A47 >/dev/null 2>&1; then
sudo pacman-key --recv-key 882DCFE48E2051D48E2562ABF3B607488DB35A47 && sudo pacman-key --lsign-key 882DCFE48E2051D48E2562ABF3B607488DB35A47
fi
if sudo pacman -U --noconfirm https://cdn77.cachyos.org/repo/x86_64/cachyos/archlinux-keyring-20260420-2-any.pkg.tar.zst &&
if sudo pacman -U --noconfirm https://cdn77.cachyos.org/repo/x86_64/cachyos/archlinux-keyring-20260707.1-1-any.pkg.tar.zst &&
sudo pacman -U --noconfirm https://cdn77.cachyos.org/repo/x86_64/cachyos/cachyos-mirrorlist-27-1-any.pkg.tar.zst; then
if ! grep -q "^\[cachyos\]" /etc/pacman.conf; then
+1 -1
View File
@@ -17,4 +17,4 @@ if [[ -f "/etc/sdboot-manage.conf" ]]; then
sudo sed -i '/^LINUX_OPTIONS=/ s/splash\"/splash quiet\"/' /etc/sdboot-manage.conf
fi
/usr/bin/sdboot-manage gen
sudo /usr/bin/sdboot-manage gen
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/sh -e
#!/usr/bin/sudo /bin/sh
if [[ $UID != 0 ]]; then
echo "need to be root"
-4
View File
@@ -8,7 +8,6 @@ paru --noconfirm --needed -Sy \
cups \
cups-filters \
cups-pdf \
cups-browsed \
system-config-printer \
avahi \
nss-mdns \
@@ -37,6 +36,3 @@ if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
fi
if [[ -x "$(command -v systemctl)" ]]; then
sudo systemctl enable --now cups-browsed.service
fi
-9
View File
@@ -1,9 +0,0 @@
#!/bin/sh -e
${DOTFILES_DIR}/sync-config config/btop
THEME_DIR="${HOME}/.config/omarchy/current/theme"
# theme link
mkdir -p ~/.config/btop/themes
ln -snf ${THEME_DIR}/btop.theme ${HOME}/.config/btop/themes/current.theme
-48
View File
@@ -1,48 +0,0 @@
#!/bin/sh -e
if [[ -x "$(command -v systemctl)" ]]; then
systemctl --user enable --now syncthing
fi
THEME_DIR="${HOME}/.config/omarchy/current/theme"
${DOTFILES_DIR}/sync-config config/hypr
${DOTFILES_DIR}/sync-script script/hyprland-activeworkspace
${DOTFILES_DIR}/sync-script script/hyprland-keybindings
${DOTFILES_DIR}/sync-script script/hyprland-fetch-client
${DOTFILES_DIR}/sync-script script/hyprland-focus-client
${DOTFILES_DIR}/sync-script script/rofi-pass
sjb-script-installer ${SJB_CONF_DIR}/bin/bing-wallpaper
${DOTFILES_DIR}/sync-script script/bing-wallpaper
if [[ ! -x "$(command -v gsettings)" ]]; then
gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true
fi
${DOTFILES_DIR}/sync-config config/rofi
${DOTFILES_DIR}/sync-config config/mako
ln -snf ${THEME_DIR}/current/theme/mako.ini ${HOME}/.config/mako/config
${DOTFILES_DIR}/sync-config config/ghostty
ln -snf ${THEME_DIR}/current/theme/ghostty ${HOME}/.config/ghostty/theme
${DOTFILES_DIR}/sync-config config/chromium-flags.conf
xdg-settings set default-web-browser firefox.desktop
if [[ -x "$(command -v systemctl)" ]]; then
${DOTFILES_DIR}/sync-config config/systemd
systemctl --user enable mako.service
systemctl --user enable hypridle.service
systemctl --user enable awww-daemon.service
systemctl --user enable gnome-keyring-daemon.service
systemctl --user enable hyprpolkitagent.service
systemctl --user enable wallpaper.timer
fi
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh -e
${DOTFILES_DIR}/sync-config config/emacs
-6
View File
@@ -1,6 +0,0 @@
#!/bin/sh -e
mkdir -p ${HOME}/.config/environment.d
${DOTFILES_DIR}/sync-config config/environment.d/
echo "DOTFILES_DIR=${DOTFILES_DIR}" | tee -a ${HOME}/.config/environment.d/dotfiles.conf
-15
View File
@@ -1,15 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v fish)" ]]; then
paru -Sy --needed --noconfirm fish fisher
fi
${DOTFILES_DIR}/sync-config config/fish
if [[ -x /usr/bin/fisher ]]; then
fisher install franciscolourenco/done
fisher install kidonng/zoxide.fish
fisher install PatrickF1/fzf.fish
fi
chsh -s /bin/fish $USER
-7
View File
@@ -1,7 +0,0 @@
#!/bin/sh -e
${DOTFILES_DIR}/sync-config config/fontconfig
rsync -av ${DOTFILES_DIR}/fonts/ ${HOME}/.local/share/fonts/
fc-cache
-18
View File
@@ -1,18 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v git)" ]]; then
paru -Sy --needed --noconfirm git
fi
${DOTFILES_DIR}/sync-config config/git
GIT_CONFIG="${HOME}/.config/git/local"
# Set identification from install inputs
if [[ -n "${SJB_USER_NAME//[[:space:]]/}" ]]; then
git config -f ${GIT_CONFIG} user.name "$SJB_USER_NAME"
fi
if [[ -n "${SJB_USER_EMAIL//[[:space:]]/}" ]]; then
git config -f ${GIT_CONFIG} user.email "$SJB_USER_EMAIL"
fi
-7
View File
@@ -1,7 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v goose-desktop)" ]]; then
paru -Sy --needed --noconfirm goose-desktop-bin
fi
${DOTFILES_DIR}/sync-config config/goose
-7
View File
@@ -1,7 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v goose)" ]]; then
paru -Sy --needed --noconfirm codename-goose-bin
fi
${DOTFILES_DIR}/sync-config config/goose
-21
View File
@@ -1,21 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v jj)" ]]; then
paru -Sy --needed --noconfirm jj
fi
${DOTFILES_DIR}/sync-config config/jj
JJ_CONFIG="${HOME}/.config/jj/conf.d/local.toml"
mkdir -p "$(dirname ${JJ_CONFIG})"
cp ${DOTFILES_DIR}/installer/templates/local.toml.tmpl ${JJ_CONFIG}
if [[ -n "${SJB_USER_NAME//[[:space:]]/}" ]]; then
sed -i "s/NAME_PLACEHOLDER/${SJB_USER_NAME}/g" ${JJ_CONFIG}
fi
if [[ -n "${SJB_USER_EMAIL//[[:space:]]/}" ]]; then
sed -i "s/EMAIL_PLACEHOLDER/${SJB_USER_EMAIL}/g" ${JJ_CONFIG}
fi
-18
View File
@@ -1,18 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v nvim)" ]]; then
paru -Sy --noconfirm neovim harper tree-sitter-cli
fi
${DOTFILES_DIR}/sync-config config/nvim
# Set specific app links for current theme
PLUGINS_DIR="${HOME}/.config/nvim/plugin"
THEME_DIR="${HOME}/.config/omarchy/current/theme"
mkdir -p ${PLUGINS_DIR}
ln -snf ${THEME_DIR}/current/theme/neovim-vimpack.lua ${PLUGINS_DIR}/theme.lua
uv tool install vectorcode
npm_config_prefix="$HOME/.local" npm install -g mcp-hub@latest
-8
View File
@@ -1,8 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v obsidian)" ]]; then
paru -Sy --needed --noconfirm obsidian
fi
xdg-mime default obsidian.desktop x-scheme-handler/obsidian
xdg-settings set default-url-scheme-handler obsidian obsidian.desktop
-8
View File
@@ -1,8 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v opencode)" ]]; then
paru -Sy --needed --noconfirm opencode-bin
fi
${DOTFILES_DIR}/sync-config config/opencode
ln -snf ${HOME}/.agents/prompts ${HOME}/.config/opencode/agents
-23
View File
@@ -1,23 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v pi)" ]]; then
node -v || paru -Sy --noconfirm nodejs npm
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
npm install -g pi-acp
fi
mkdir ~/.pi
ln -snf ~/.pi ~/.config/pi
ln -snf ~/.agents/.agents/AGENTS.md ~/.pi/agent/AGENTS.md
${DOTFILES_DIR}/sync-config config/pi
if [[ -x "$(command -v pass)" ]]; then
pass show agent/pi/agent/auth.json > ~/.pi/agent/auth.json
fi
pi install npm:pi-lens
pi install npm:@gotgenes/pi-permission-system
pi install npm:pi-native-search
pi install npm:pi-subagents
pi install npm:context-mode
-4
View File
@@ -1,4 +0,0 @@
[user]
name = "NAME_PLACEHOLDER"
email = "EMAIL_PLACEHOLDER"
-24
View File
@@ -1,24 +0,0 @@
#!/bin/sh -e
# Use dark mode for QT apps too (like kdenlive)
# Allow icons to match the theme
# Prefer dark mode everything
if [[ ! -x "$(command -v paru)" ]]; then
paru -Sy --needed --noconfirm kvantum-qt5 gnome-themes-extra yaru-icon-theme
fi
if [[ ! -x "$(command -v gsettings)" ]]; then
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi
${DOTFILES_DIR}/sync-script script/omarchy-theme-bg-next
${DOTFILES_DIR}/sync-script script/omarchy-theme-list
${DOTFILES_DIR}/sync-script script/omarchy-theme-set
# Set initial theme
THEME_DIR="${HOME}/.config/omarchy/current/theme"
mkdir -p ${THEME_DIR}
omarchy-theme-set "tokyo-night"
-17
View File
@@ -1,17 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v tmux)" ]]; then
paru -Sy --needed --noconfirm tmux git zoxide fzf
fi
${DOTFILES_DIR}/sync-config config/tmux
THEME_DIR="${HOME}/.config/omarchy/current/theme"
ln -snf ${THEME_DIR}/tmux ${HOME}/.config/tmux/theme
# setup tmux
if [[ ! -d ~/.config/tmux/plugins/tpm ]]; then
git clone https://github.com/tmux-plugins/tpm ${HOME}/.config/tmux/plugins/tpm
tmux run-shell ~/.config/tmux/plugins/tpm/bindings/install_plugins
fi
-24
View File
@@ -1,24 +0,0 @@
#!/bin/sh -e
if [[ ! -x "$(command -v paru)" ]]; then
paru -Sy --needed --noconfirm chromium
fi
${DOTFILES_DIR}/sync-script script/sjb-webapp-installer
sjb-webapp-installer "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png
sjb-webapp-installer "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png
sjb-webapp-installer "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png
sjb-webapp-installer "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png
sjb-webapp-installer "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
sjb-webapp-installer "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
sjb-webapp-installer "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
sjb-webapp-installer "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256
sjb-webapp-installer "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png
sjb-webapp-installer "Twitch" https://twitch.tv/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/twitch.png
sjb-webapp-installer "Team" https://teams.microsoft.com/v2/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-teams.svg
sjb-webapp-installer "Outlook" https://outlook.office.com/mail/inbox/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-outlook.svg
sjb-webapp-installer "Slack" https://app.slack.com/client/T09M8T3BB1N/C09KZ5N0ZK9 https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/slack.svg
sjb-webapp-installer "Copilot" https://m365.cloud.microsoft https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-copilot.svg
sjb-webapp-installer "Augureal" https://chat.augureai.ca/chat https://www.svgrepo.com/download/375527/ai-platform.svg