summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsilly <u65487754@gmail.com>2026-03-30 06:26:07 +0200
committerGitHub <noreply@github.com>2026-03-30 06:26:07 +0200
commit222edf5ba552ff92d5c013cf29d1ae9c2cd37c9a (patch)
tree27fe32cd7a78bd1f1d3f05e2675dce9dd1732c26
parentaf57c9435f503a060b0f1e330976a08af136b549 (diff)
Create silly.sh
-rw-r--r--silly.sh73
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"