diff options
| author | silly <u65487754@gmail.com> | 2026-03-30 06:26:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-30 06:26:07 +0200 |
| commit | 222edf5ba552ff92d5c013cf29d1ae9c2cd37c9a (patch) | |
| tree | 27fe32cd7a78bd1f1d3f05e2675dce9dd1732c26 /silly.sh | |
| parent | af57c9435f503a060b0f1e330976a08af136b549 (diff) | |
Create silly.sh
Diffstat (limited to 'silly.sh')
| -rw-r--r-- | silly.sh | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/silly.sh b/silly.sh new file mode 100644 index 0000000..35fce4d --- /dev/null +++ b/silly.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -euo pipefail + +REPO_URL="https://github.com/x2p3lnk7tq9z/dotfiles.git" +DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.dotfiles}" + +PACMAN_PKGS=( + hyprland + hyprlock + xdg-desktop-portal-hyprland + kitty + rofi + git + base-devel +) + +AUR_PKGS=() +HOME_DOTFILES=() + +INSTALL_PKGS=false + +for arg in "$@"; do + case "$arg" in + --packages|-p) INSTALL_PKGS=true ;; + --help|-h) + echo "usage: $0 [--packages]" + exit 0 ;; + esac +done + +[[ $EUID -eq 0 ]] && { echo "do not run as root"; exit 1; } +command -v git &>/dev/null || { echo "git required"; exit 1; } + +if $INSTALL_PKGS; then + sudo pacman -Syu --needed --noconfirm "${PACMAN_PKGS[@]}" + + if ! command -v yay &>/dev/null; then + tmp=$(mktemp -d) + git clone --depth=1 https://aur.archlinux.org/yay.git "$tmp/yay" + (cd "$tmp/yay" && makepkg -si --noconfirm) + rm -rf "$tmp" + fi + + if [[ ${#AUR_PKGS[@]} -gt 0 ]]; then + yay -S --needed --noconfirm "${AUR_PKGS[@]}" + fi +fi + +if [[ -d "$DOTFILES_DIR/.git" ]]; then + git -C "$DOTFILES_DIR" pull --ff-only &>/dev/null +else + git clone --depth=1 "$REPO_URL" "$DOTFILES_DIR" &>/dev/null +fi + +mkdir -p "$HOME/.config" + +for src in "$DOTFILES_DIR/.config"/*/; do + name="$(basename "$src")" + dst="$HOME/.config/$name" + [[ -e "$dst" || -L "$dst" ]] && rm -rf "$dst" + cp -r "$src" "$dst" +done + +for f in "${HOME_DOTFILES[@]}"; do + [[ -e "$DOTFILES_DIR/$f" ]] && cp -r "$DOTFILES_DIR/$f" "$HOME/$f" +done + +if [[ -d "$DOTFILES_DIR/.config/scripts" ]]; then + find "$DOTFILES_DIR/.config/scripts" -type f | xargs chmod +x +fi + +echo "dotfiles installed" |
