Add end-4 hyprland dependecies post-install

This commit is contained in:
2026-09-15 15:37:30 +10:00
parent 94ce80a365
commit df046dcba2
8 changed files with 277 additions and 2 deletions
+62 -1
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash
set -euo pipefail
# Populate the keyring in the built root from the keyring bundles
# (/usr/share/pacman/keyrings, incl. the copied cachyos keyring).
# This mirrors the guide; it runs inside the image you are making.
@@ -10,4 +12,63 @@ pacman-key --populate archlinux cachyos chaotic
# 'pacman' package, which ships a stock /etc/pacman.conf and would otherwise
# overwrite this directory's configured version.
install -m 0644 /root/.live-pacman.conf /etc/pacman.conf
rm -f /root/.live-pacman.conf
rm -f /root/.live-pacman.conf
# ============================================================================
# Pre-install dotfile dependencies into /etc/skel so new users get them
# instantly on first login (no network required).
# ============================================================================
SKEL="/etc/skel"
# ── Oh-My-Zsh ────────────────────────────────────────────────────────────────
if [[ ! -d "${SKEL}/.oh-my-zsh" ]]; then
echo "[customize] Cloning Oh-My-Zsh into skel..."
git clone --depth=1 https://github.com/ohmyzsh/ohmyzsh.git "${SKEL}/.oh-my-zsh"
fi
# Oh-My-Zsh custom plugins
ZSH_CUSTOM="${SKEL}/.oh-my-zsh/custom"
mkdir -p "${ZSH_CUSTOM}/plugins"
declare -A OMZ_PLUGINS=(
[zsh-history-substring-search]="https://github.com/zsh-users/zsh-history-substring-search.git"
[zsh-autosuggestions]="https://github.com/zsh-users/zsh-autosuggestions.git"
[zsh-eza]="https://github.com/z-shell/zsh-eza.git"
[fzf-zsh-plugin]="https://github.com/unixorn/fzf-zsh-plugin.git"
[zsh-syntax-highlighting]="https://github.com/zsh-users/zsh-syntax-highlighting.git"
[zsh-autocomplete]="https://github.com/marlonrichert/zsh-autocomplete.git"
)
for plugin in "${!OMZ_PLUGINS[@]}"; do
target="${ZSH_CUSTOM}/plugins/${plugin}"
if [[ ! -d "${target}" ]]; then
echo "[customize] Cloning OMZ plugin: ${plugin}"
git clone --depth=1 "${OMZ_PLUGINS[${plugin}]}" "${target}"
fi
done
# ── LazyVim (lazy.nvim bootstraps on first launch, but pre-clone the plugin) ─
NVIM_DATA="${SKEL}/.local/share/nvim"
mkdir -p "${NVIM_DATA}"
if [[ ! -d "${NVIM_DATA}/lazy/lazy.nvim" ]]; then
echo "[customize] Pre-cloning lazy.nvim for LazyVim..."
git clone --filter=blob:none --branch=stable \
https://github.com/folke/lazy.nvim.git "${NVIM_DATA}/lazy/lazy.nvim"
fi
# ── Fish: ensure default shell is set for the live user ──────────────────────
# The live user (usually 'archlinux' or 'root') gets fish as default shell
if command -v fish &>/dev/null; then
echo "[customize] Setting fish as default shell for skel..."
chsh -s /usr/bin/fish root 2>/dev/null || true
fi
# ── Ensure skel directories have correct permissions ─────────────────────────
chmod 700 "${SKEL}/.config" 2>/dev/null || true
find "${SKEL}/.config" -type f -exec chmod 644 {} \; 2>/dev/null || true
find "${SKEL}/.config" -type d -exec chmod 755 {} \; 2>/dev/null || true
find "${SKEL}/.config" -name '*.sh' -exec chmod 755 {} \; 2>/dev/null || true
find "${SKEL}/.local" -type d -exec chmod 755 {} \; 2>/dev/null || true
echo "[customize] Dotfile pre-installation complete."