diff --git a/0-setup-linux.sh b/0-setup-linux.sh deleted file mode 100755 index a6cf065..0000000 --- a/0-setup-linux.sh +++ /dev/null @@ -1,305 +0,0 @@ -#!/bin/bash -set -euo pipefail - -########################## -# Color helpers (no tput) -########################## -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[0;33m' -CYAN='\033[0;36m' -PURPLE='\033[0;35m' -BLUE='\033[0;34m' -GRAY='\033[0;37m' -BOLD='\033[1m' -RESET='\033[0m' - -# Disable colors if output is not a terminal -if [ ! -t 1 ]; then - RED='' GREEN='' YELLOW='' CYAN='' PURPLE='' BLUE='' GRAY='' BOLD='' RESET='' -fi - -color_yellow() { printf '%b' "$YELLOW"; } -color_cyan() { printf '%b' "$CYAN"; } -color_red() { printf '%b' "$RED"; } -color_green() { printf '%b' "$GREEN"; } -color_reset() { printf '%b' "$RESET"; } - -########################## -# Script Version Selection -########################## -echo "Select script version:" -echo " 1) v1 (legacy)" -echo " 2) v2 (stable)" -# Added a 10-second timeout and default to 2 -if ! read -t 10 -rp "Enter choice [1/2] (default: 2): " ver_choice; then - ver_choice=2 - echo -e "\nTimeout reached, defaulting to v2." -fi - -case "$ver_choice" in - 1) SCRIPT_VERSION="v1" ;; - *) SCRIPT_VERSION="v2" ;; -esac - -echo -color_cyan -echo "################################################################################" -echo "Selected Script Version: $SCRIPT_VERSION" -echo "################################################################################" -color_reset - -if [[ ! -d "./${SCRIPT_VERSION}" ]]; then - color_red - echo "ERROR: Version folder not found: ${SCRIPT_VERSION}" - color_reset - exit 1 -fi - -########################## -# OS Detection -########################## -echo -color_yellow -echo "################################################################" -echo "################### Start OS Detection" -echo "################################################################" -color_reset -echo - -source /etc/os-release - -OS_ID="${ID,,}" -OS_LIKE="${ID_LIKE:-}" -OS_LIKE="${OS_LIKE,,}" -OS_VERSION="${VERSION_ID:-unknown}" -OS_PRETTY="$PRETTY_NAME" -OS="" - -case "$OS_ID" in - arch) OS="arch" ;; - debian) OS="debian" ;; - ubuntu) OS="ubuntu" ;; - fedora) OS="fedora" ;; - *) - if [[ "$OS_LIKE" == *"ubuntu"* ]]; then - OS="ubuntu" - elif [[ "$OS_LIKE" == *"arch"* ]]; then - OS="arch" - elif [[ "$OS_LIKE" == *"debian"* ]]; then - OS="debian" - elif [[ "$OS_LIKE" == *"fedora"* || "$OS_LIKE" == *"rhel"* ]]; then - OS="fedora" - fi - ;; -esac - -if [[ -n "$OS" ]]; then - color_cyan - echo "################################################################################" - echo "Detected OS: $OS ($OS_PRETTY)" - echo "Version: $OS_VERSION" - echo "################################################################################" - color_reset -else - color_red - echo "################################################################################" - echo "ERROR: Unsupported or unknown Linux distribution." - echo "Detected: ID=$OS_ID, ID_LIKE=${OS_LIKE:-empty}" - echo "################################################################################" - color_reset - exit 1 -fi - -########################## -# Desktop Environment Detection / Selection -########################## -echo -color_yellow -echo "################################################################" -echo "################### Desktop Environment Selection" -echo "################################################################" -color_reset -echo - -DE_RAW="${XDG_CURRENT_DESKTOP:-${DESKTOP_SESSION:-}}" -DE="" - -case "${DE_RAW,,}" in - *xfce*) DE="xfce" ;; - *plasma*|*kde*) DE="plasma" ;; - *gnome*) DE="gnome" ;; - ""|none) DE="" ;; -esac - -if [[ -n "$DE" ]]; then - echo - color_cyan - echo "################################################################################" - echo "Detected Desktop Environment: $DE (${DE_RAW})" - echo "################################################################################" - color_reset -else - echo - echo "No Desktop Environment detected. Select one to install:" - while true; do - echo " 1) XFCE" - echo " 2) Plasma" - echo " 3) GNOME" - echo " x) None (default)" - # Added timeout to avoid hanging - if ! read -t 15 -rp "Enter choice [1/2/3/x] (default: x): " choice; then - choice="x" - fi - - case "${choice,,}" in - 1) DE="xfce"; break ;; - 2) DE="plasma"; break ;; - 3) DE="gnome"; break ;; - x|"") DE="none"; break ;; - *) echo "Invalid option. Please enter 1, 2, 3, or x." ;; - esac - done - echo - color_cyan - echo "################################################################################" - echo "Selected Desktop Environment: $DE" - echo "################################################################################" - color_reset -fi - -########################## -# Tiling Window Manager Selection -########################## -echo -color_yellow -echo "################################################################" -echo "################### Tiling WM Selection" -echo "################################################################" -color_reset -echo - -while true; do - echo - echo "Select a tiling window manager:" - echo " 1) CHADWM" - echo " 2) Hyprland" - echo " 3) Niri" - echo " x) None (default)" - if ! read -t 15 -rp "Enter choice [1/2/3/x] (default: x): " choice; then - choice="x" - fi - - case "${choice,,}" in - 1) TWM="chadwm"; break ;; - 2) TWM="hyprland"; break ;; - 3) TWM="niri"; break ;; - x|"") TWM="none"; break ;; - *) echo "Invalid option. Please enter 1, 2, 3 or x." ;; - esac -done - -echo -color_cyan -echo "################################################################################" -echo "Selected Tiling WM: $TWM" -echo "################################################################################" -color_reset - -########################## -# Installation Level Selection -########################## -echo -color_yellow -echo "################################################################" -echo "################### Installation Level Selection" -echo "################################################################" -color_reset -echo - -while true; do - echo - echo "Select installation level:" - echo " 1) minimal" - echo " 2) full" - echo " 3) workstation" - echo " 4) server" - if ! read -t 15 -rp "Enter choice [1/2/3/4] (default: 1): " choice; then - choice="1" - fi - - case "$choice" in - 1|"") INSTALL_LEVEL="minimal"; break ;; - 2) INSTALL_LEVEL="full"; break ;; - 3) INSTALL_LEVEL="workstation"; break ;; - 4) INSTALL_LEVEL="server"; break ;; - *) echo "Invalid option. Please enter 1, 2, 3, or 4." ;; - esac -done - -echo -color_cyan -echo "################################################################################" -echo "Selected Installation Level: $INSTALL_LEVEL" -echo "################################################################################" -color_reset - -########################## -# Export selections for OS script -########################## -export DETECTED_OS="$OS" -export DETECTED_DE="$DE_RAW" -export SELECTED_DE="$DE" -export SELECTED_TWM="$TWM" -export INSTALL_LEVEL - -########################## -# Determine OS script -########################## -case "$OS" in - debian) OS_SCRIPT="./${SCRIPT_VERSION}/debian.sh" ;; - ubuntu) OS_SCRIPT="./${SCRIPT_VERSION}/ubuntu.sh" ;; - arch) OS_SCRIPT="./${SCRIPT_VERSION}/arch.sh" ;; - fedora) OS_SCRIPT="./${SCRIPT_VERSION}/fedora.sh" ;; - *) - color_red - echo - echo "No OS script available for $OS" - color_reset - exit 1 - ;; -esac - -########################## -# Preflight check & run -########################## -if [[ ! -f "$OS_SCRIPT" ]]; then - color_red - echo - echo "ERROR: OS script not found: $OS_SCRIPT" - color_reset - exit 1 -fi - -if [[ ! -x "$OS_SCRIPT" ]]; then - chmod +x "$OS_SCRIPT" -fi - -echo -color_cyan -echo "Running OS script: $OS_SCRIPT" -color_reset -bash "$OS_SCRIPT" || { - color_red - echo - echo "ERROR: OS script failed: $OS_SCRIPT" - color_reset - exit 1 -} - -echo -color_yellow -echo "################################################################" -echo "End Detection" -echo "################################################################" -color_reset diff --git a/v2/arch-chadwm.sh b/arch/arch-chadwm.sh similarity index 100% rename from v2/arch-chadwm.sh rename to arch/arch-chadwm.sh diff --git a/v2/arch-full.sh b/arch/arch-full.sh similarity index 100% rename from v2/arch-full.sh rename to arch/arch-full.sh diff --git a/v2/arch-hyprland.sh b/arch/arch-hyprland.sh similarity index 100% rename from v2/arch-hyprland.sh rename to arch/arch-hyprland.sh diff --git a/v2/arch-minimal.sh b/arch/arch-minimal.sh similarity index 100% rename from v2/arch-minimal.sh rename to arch/arch-minimal.sh diff --git a/v2/arch-niri.sh b/arch/arch-niri.sh similarity index 97% rename from v2/arch-niri.sh rename to arch/arch-niri.sh index ced4f95..01a87a4 100755 --- a/v2/arch-niri.sh +++ b/arch/arch-niri.sh @@ -92,7 +92,7 @@ CURRENT_DM="$(detect_display_manager)" if [[ -z "$CURRENT_DE" ]]; then say_cyan -e "No Desktop Environment detected. Installing Niri (light setup with SDDM)..." - install_packages sddm niri noctalia-shell fuzzel swaybg xwayland-satellite swaylock + install_packages sddm niri noctalia fuzzel swaybg xwayland-satellite swaylock enable_graphical_target say_green -e "Niri with SDDM installed successfully. You can reboot now to start Niri." diff --git a/v2/arch-plasma.sh b/arch/arch-plasma.sh similarity index 100% rename from v2/arch-plasma.sh rename to arch/arch-plasma.sh diff --git a/v2/arch-workstation.sh b/arch/arch-workstation.sh similarity index 100% rename from v2/arch-workstation.sh rename to arch/arch-workstation.sh diff --git a/v2/arch-xfce.sh b/arch/arch-xfce.sh similarity index 100% rename from v2/arch-xfce.sh rename to arch/arch-xfce.sh diff --git a/v2/arch.sh b/arch/arch.sh similarity index 100% rename from v2/arch.sh rename to arch/arch.sh diff --git a/v2/config-files/debian/.config/test.txt b/config-files/debian/.config/test.txt similarity index 100% rename from v2/config-files/debian/.config/test.txt rename to config-files/debian/.config/test.txt diff --git a/v2/config-files/debian/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/config-files/debian/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml similarity index 100% rename from v2/config-files/debian/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml rename to config-files/debian/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml diff --git a/v1/config-files/pacman.conf b/config-files/pacman.conf similarity index 100% rename from v1/config-files/pacman.conf rename to config-files/pacman.conf diff --git a/v2/debian-chadwm.sh b/debian/debian-chadwm.sh similarity index 100% rename from v2/debian-chadwm.sh rename to debian/debian-chadwm.sh diff --git a/v2/debian-full.sh b/debian/debian-full.sh similarity index 100% rename from v2/debian-full.sh rename to debian/debian-full.sh diff --git a/v2/debian-gnome.sh b/debian/debian-gnome.sh similarity index 100% rename from v2/debian-gnome.sh rename to debian/debian-gnome.sh diff --git a/v2/debian-hyprland.sh b/debian/debian-hyprland.sh similarity index 100% rename from v2/debian-hyprland.sh rename to debian/debian-hyprland.sh diff --git a/v2/debian-minimal.sh b/debian/debian-minimal.sh similarity index 100% rename from v2/debian-minimal.sh rename to debian/debian-minimal.sh diff --git a/v2/debian-plasma.sh b/debian/debian-plasma.sh similarity index 100% rename from v2/debian-plasma.sh rename to debian/debian-plasma.sh diff --git a/v2/debian-server.sh b/debian/debian-server.sh similarity index 100% rename from v2/debian-server.sh rename to debian/debian-server.sh diff --git a/v2/debian-workstation.sh b/debian/debian-workstation.sh similarity index 100% rename from v2/debian-workstation.sh rename to debian/debian-workstation.sh diff --git a/v2/debian-xfce.sh b/debian/debian-xfce.sh similarity index 100% rename from v2/debian-xfce.sh rename to debian/debian-xfce.sh diff --git a/v2/debian.sh b/debian/debian.sh similarity index 100% rename from v2/debian.sh rename to debian/debian.sh diff --git a/fedora/fedora-full.sh b/fedora/fedora-full.sh new file mode 100755 index 0000000..7b93ea2 --- /dev/null +++ b/fedora/fedora-full.sh @@ -0,0 +1,144 @@ +#!/bin/bash +set -euo pipefail + +# Map the exported variables to your local names with fallbacks to satisfy set -u +OS="${DETECTED_OS:-fedora}" +DE="${SELECTED_DE:-none}" +TWM="${SELECTED_TWM:-none}" +INSTALL_LEVEL="${INSTALL_LEVEL:-full}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo +color_cyan "Starting Fedora Full setup..." +echo + +#------------------------------------------ +# Helper functions +#------------------------------------------ +install_packages() { sudo dnf install -y "$@"; } +is_package_installed() { rpm -q "$@" &>/dev/null; } + +# Run minimal first +source "$SCRIPT_DIR/fedora-minimal.sh" + +# Add extra packages +# install_packages +# temp disabled packages + +pause_if_debug + +# install SDDM-theme +color_yellow "Installing SDDM Theme" + +GIT_DIR="$HOME/git" +REPO_DIR="$GIT_DIR/SilentSDDM" +REPO_URL="https://github.com/uiriansan/SilentSDDM" + +mkdir -p "$GIT_DIR" + +if [ -d "$REPO_DIR/.git" ]; then + echo "SilentSDDM already exists. Updating repository..." + cd "$REPO_DIR" && git pull --rebase +else + echo "Cloning SilentSDDM..." + git clone -b main --depth=1 "$REPO_URL" "$REPO_DIR" +fi + +echo "Running installer..." + +# Move into the directory safely +cd "$REPO_DIR" || { + color_red "Error: Failed to enter $REPO_DIR" + exit 1 +} + +chmod +x install.sh + +# Temporarily disable pipefail so SIGPIPE doesn't register as a fatal script crash +set +o pipefail + +yes | ./install.sh +INSTALL_STATUS=$? + +# Instantly restore pipefail for the remaining application scripts +set -o pipefail + +# Verify the installer script's actual status code +if [ $INSTALL_STATUS -ne 0 ]; then + color_red "Error: SDDM theme installer encountered a genuine runtime issue." + exit 1 +fi + +color_green "SDDM theme installer completed successfully!" + +pause_if_debug + +# replace bashrc +color_yellow "making backup of bashrc" +sudo cp -v /etc/skel/.bashrc /etc/skel/.bashrc.starburst + +pause_if_debug + +# Add workstation repo +sudo dnf install -y fedora-workstation-repositories + +color_cyan "Install Office packages" +install_packages libreoffice + +pause_if_debug + +color_cyan "Install editors packages" +# temp removed packages: +# sublime-text-4 +flatpak install -y flathub com.vscodium.codium + +pause_if_debug + +color_cyan "Install internet packages" +sudo dnf config-manager setopt google-chrome.enabled=1 +install_packages google-chrome-stable +# temp removed packages +# discord firefox insync brave-bin + +pause_if_debug + +color_cyan "Install theming packages" +# variety + +pause_if_debug + +color_cyan "Install media packages" +install_packages mpv flameshot +# temp removed packages +# vlc gimp inkscape spotify lollypop + +pause_if_debug + +color_cyan "Install shell packages" +install_packages zsh zsh-syntax-highlighting +# temp removed packages +# fish oh-my-zsh-git zsh-completions + +pause_if_debug + +color_cyan "Install system-tools" +install_packages @development-tools wget cmake ninja-build pkgconf-pkg-config + +pause_if_debug + +color_cyan "Install tools" +install_packages system-config-printer system-config-printer-applet system-config-printer-libs ripgrep meld btop htop +# temp removed packages +# wttr + +pause_if_debug + +# End of script +color_green "Full setup completed." + +###### TODO +### autostart flameshot tray icon +### autostart insync tray icon +### autostart volumeicon +### autostart clipboard manager +### set google chrome as default browser \ No newline at end of file diff --git a/fedora/fedora-minimal.sh b/fedora/fedora-minimal.sh new file mode 100755 index 0000000..a3a194a --- /dev/null +++ b/fedora/fedora-minimal.sh @@ -0,0 +1,137 @@ +#!/bin/bash +set -euo pipefail + +# Map the exported variables to your local names with fallbacks to satisfy set -u +OS="${DETECTED_OS:-fedora}" +DE="${SELECTED_DE:-none}" +TWM="${SELECTED_TWM:-none}" +INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo +color_cyan "Starting Fedora Minimal setup..." +echo + +#------------------------------------------ +# Helper functions +#------------------------------------------ +install_packages() { sudo dnf install -y "$@"; } +is_package_installed() { rpm -q "$@" &>/dev/null; } + +remove_packages() { + local packages_to_remove=() + for pkg in "$@"; do + if is_package_installed "$pkg"; then + packages_to_remove+=("$pkg") + fi + done + + if [ ${#packages_to_remove[@]} -gt 0 ]; then + color_cyan "Removing packages: ${packages_to_remove[*]}" + sudo dnf remove -y "${packages_to_remove[@]}" + fi +} + +#------------------------------------------ +# 1. Base Dependencies & Repos +#------------------------------------------ +color_cyan; echo "Installing base dependencies..." +# dnf-plugins-core is required for COPR +install_packages dnf-plugins-core wget + +pause_if_debug + +#------------------------------------------ +# 2. Main Package Installation +#------------------------------------------ +color_yellow; echo "Installing essential tools..." + +# 1. Install universal base packages (minus the polkit agent) +install_packages \ + fastfetch bash-completion alacritty \ + hwinfo lshw duf chrony \ + man-db tree xdg-user-dirs rsync time bat \ + thunar thunar-archive-plugin thunar-volman \ + baobab gvfs-smb hddtemp squashfs-tools \ + zip gzip p7zip unace unrar xarchiver \ + powertop inxi acpi plocate nm-connection-editor \ + python3-pylint qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia \ + arandr catfish galculator NetworkManager network-manager-applet \ + numlockx pipewire pipewire-alsa pipewire-pulse \ + wireplumber pavucontrol playerctl gparted +# temp disabled packages +# xfce4-indicator-plugin chromium feh gnome-font-viewer dconf-editor hardinfo2 lsb_release NetworkManager-openvpn xfce4-pulseaudio-plugin xfce4-clipman-plugin + +pause_if_debug + +# 2. Inject the correct Polkit agent & PeaZip based on environment +color_cyan; echo "Tailoring toolkits for $DE / $TWM..." +if [[ "$DE" == "plasma" || "$TWM" == "hyprland" ]]; then + install_packages polkit-kde-agent-1 peazip-common peazip-qt6 +else + # XFCE, GNOME, Niri, CHADWM (Uses lightweight generic toolkits) + install_packages xfce-polkit peazip-common peazip-gtk3 +fi + +if ! command -v starship &> /dev/null; then + color_cyan; echo "Installing Starship shell prompt..." + curl -sS https://starship.rs/install.sh | sh -s -- -y +fi + +pause_if_debug + +#------------------------------------------ +# 3. Fonts (RobotoMono Nerd Font) +#------------------------------------------ +FONT_DIR="$HOME/.local/share/fonts" +DOWNLOAD_NAME="RobotoMono" +if ! find "$FONT_DIR" -name "*RobotoMonoNerdFont*" | grep -q .; then + color_yellow; echo "Installing ${DOWNLOAD_NAME} Nerd Font..." + mkdir -p "$FONT_DIR" + FONT_ZIP="/tmp/${DOWNLOAD_NAME}.zip" + curl -L "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${DOWNLOAD_NAME}.zip" -o "$FONT_ZIP" + unzip -oq "$FONT_ZIP" -d "$FONT_DIR" + fc-cache -fv + rm "$FONT_ZIP" + color_green; echo "${DOWNLOAD_NAME} installed." +else + color_yellow; echo "RobotoMono Nerd Font already installed." +fi + +pause_if_debug + +#------------------------------------------ +# 4. Enable Services +#------------------------------------------ +color_cyan "Enabling services..." + +sudo systemctl enable --now fstrim.timer +sudo systemctl enable --now chronyd || true + +# Ensure NetworkManager manages all interfaces +color_yellow "Ensuring NetworkManager service is enabled and running..." +sudo systemctl enable --now NetworkManager + +color_yellow "Setting NetworkManager to globally manage all devices..." +sudo tee /etc/NetworkManager/conf.d/10-globally-managed-devices.conf > /dev/null <<'EOF' +[ifupdown] +managed=true + +[keyfile] +unmanaged-devices= +EOF + +color_yellow "Restarting NetworkManager service..." +sudo systemctl restart NetworkManager + +color_yellow "Waiting for NetworkManager to reconnect..." +sleep 15 + +pause_if_debug + +# Enable pipewire +systemctl --user enable pipewire pipewire-pulse wireplumber + +pause_if_debug + +color_green "Fedora Minimal setup completed." \ No newline at end of file diff --git a/fedora/fedora-niri.sh b/fedora/fedora-niri.sh new file mode 100755 index 0000000..2260739 --- /dev/null +++ b/fedora/fedora-niri.sh @@ -0,0 +1,109 @@ +#!/bin/bash +set -euo pipefail + +# Map the exported variables to your local names with fallbacks to satisfy set -u +OS="${DETECTED_OS:-fedora}" +DE="${SELECTED_DE:-none}" +TWM="${SELECTED_TWM}" +INSTALL_LEVEL="${INSTALL_LEVEL}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo +color_cyan "Starting Fedora Niri setup..." +echo + +#------------------------------------------ +# Helper functions +#------------------------------------------ +install_packages() { sudo dnf install -y "$@"; } +is_package_installed() { rpm -q "$@" &>/dev/null; } + +detect_de() { + # Check if a desktop session is currently running or XFCE is available + if [ "${XDG_CURRENT_DESKTOP:-}" ]; then + echo "${XDG_CURRENT_DESKTOP,,}" # lowercase the output + elif command -v xfce4-session >/dev/null 2>&1; then + echo "xfce" + else + echo "" + fi +} + +detect_display_manager() { + # Fedora/Systemd way to check the active DM symlink + if [ -L /etc/systemd/system/display-manager.service ]; then + basename "$(readlink /etc/systemd/system/display-manager.service)" | sed 's/\.service//' + else + echo "" + fi +} + +switch_display_manager() { + local target_dm="$1" + local current_dm + current_dm=$(detect_display_manager) + + if [[ "$current_dm" != "$target_dm" ]]; then + if [[ -n "$current_dm" ]]; then + color_yellow "Disabling existing display manager: $current_dm" + sudo systemctl disable "$current_dm" + fi + color_yellow "Enabling $target_dm..." + sudo systemctl enable "$target_dm" + fi + sudo systemctl set-default graphical.target +} + +#------------------------------------------ +# Start installation +#------------------------------------------ +color_yellow "Starting Niri setup..." + +CURRENT_DE="$(detect_de)" +CURRENT_DM="$(detect_display_manager)" + +# Add Terra repo +sudo dnf install -y --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release + +pause_if_debug + +# Core components for Niri & Noctalia setup +NIRI_PACKAGES=(niri fuzzel noctalia) + +if [[ -z "$CURRENT_DE" || "$CURRENT_DE" == "none" || "$CURRENT_DE" == "sway" ]]; then + color_cyan "No Desktop Environment detected. Installing Niri + Noctalia Shell..." + + # 1. Add the repo first + add_terra_repo + + # 2. Install everything + install_packages sddm "${NIRI_PACKAGES[@]}" + switch_display_manager "sddm" + + color_green "Niri, Noctalia, and SDDM installed successfully." + +else + color_cyan "Detected existing Desktop Environment: $CURRENT_DE" + + # Always install the window manager packages + install_packages "${NIRI_PACKAGES[@]}" + + if [[ "$CURRENT_DM" == "lightdm" ]]; then + color_yellow "LightDM is currently active. Replacing with SDDM..." + + # Fedora equivalent to purge lightdm safely + sudo dnf remove -y lightdm lightdm-gtk + + install_packages sddm + switch_display_manager "sddm" + + color_green "LightDM removed and replaced with SDDM." + else + color_cyan "Current display manager: ${CURRENT_DM:-none}. Leaving it to handle Niri login sessions." + fi +fi + +pause_if_debug + +# End of script +color_green "Niri / SDDM setup completed." \ No newline at end of file diff --git a/fedora/fedora-xfce.sh b/fedora/fedora-xfce.sh new file mode 100755 index 0000000..5242446 --- /dev/null +++ b/fedora/fedora-xfce.sh @@ -0,0 +1,167 @@ +#!/bin/bash +set -euo pipefail + +# Map the exported variables to your local names with fallbacks to satisfy set -u +OS="${DETECTED_OS:-fedora}" +DE="${SELECTED_DE:-xfce}" +TWM="${SELECTED_TWM:-none}" +INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo +color_cyan "Starting Fedora XFCE setup..." +echo + +#------------------------------------------ +# Helper functions +#------------------------------------------ +install_packages() { sudo dnf install -y "$@"; } +is_package_installed() { rpm -q "$@" &>/dev/null; } + +detect_de() { + echo "${XDG_CURRENT_DESKTOP:-${DESKTOP_SESSION:-}}" +} + +detect_display_manager() { + if systemctl is-active --quiet sddm; then + echo "sddm" + elif systemctl is-active --quiet lightdm; then + echo "lightdm" + elif systemctl is-active --quiet gdm; then + echo "gdm" + else + echo "none" + fi +} + +enable_graphical_target() { + sudo systemctl set-default graphical.target +} + +#------------------------------------------ +# Main Execution Flow +#------------------------------------------ +echo +color_yellow "Starting XFCE installation..." + +CURRENT_DE="$(detect_de)" +CURRENT_DM="$(detect_display_manager)" + +if [[ -z "$CURRENT_DE" || "$CURRENT_DE" == "none" ]]; then + color_cyan "No Desktop Environment detected. Installing XFCE (light setup with SDDM)..." + + # 1. Install core XFCE desktop components + SDDM + install_packages sddm xfce4-session xfce4-settings xfwm4 xfce4-panel xfdesktop Thunar xorg-x11-xinit xorg-x11-server-Xorg xhost + + # 2. Install the XFCE core plugins safely via DNF group/virtual syntax + install_packages @xfce-extra-plugins + + enable_graphical_target + sudo systemctl enable sddm + + color_green "XFCE with SDDM installed successfully. You can reboot now to start XFCE." +else + color_cyan "Detected existing Desktop Environment: $CURRENT_DE" + + if [[ "$CURRENT_DM" == "lightdm" ]]; then + color_yellow "LightDM is currently active. Replacing with SDDM..." + + sudo systemctl disable lightdm + sudo dnf remove -y lightdm lightdm-gtk-greeter + + install_packages sddm + sudo systemctl enable sddm + enable_graphical_target + + color_green "LightDM removed and replaced with SDDM." + else + color_cyan "Current display manager: ${CURRENT_DM}. Leaving unchanged." + fi +fi + +pause_if_debug + +#------------------------------------------ +# XFCE-specific configuration +#------------------------------------------ +if [[ "${DE}" == "xfce" || "${DDE}" == "xfce" ]]; then + echo + color_cyan "Applying XFCE defaults: fonts, browser, and terminal..." + + # Ensure xfconf-query exists (for XFCE settings) + if ! command -v xfconf-query >/dev/null 2>&1; then + color_yellow "xfconf-query not found — installing xfce4-settings..." + install_packages xfce4-settings + fi + + pause_if_debug + + # Set fonts via xfconf-query + if command -v xfconf-query >/dev/null 2>&1; then + # Interface font (UI) + xfconf-query -c xsettings -p /Gtk/FontName -s "RobotoMono Nerd Font Regular 10" || true + # Monospace font (terminals, editors) + xfconf-query -c xsettings -p /Gtk/MonospaceFontName -s "RobotoMono Nerd Font Mono Regular 10" || true + + color_green "XFCE fonts updated successfully!" + else + color_yellow "xfconf-query not found — skipping XFCE font config (will apply at first login)." + fi + + pause_if_debug + + # Set default terminal to Alacritty (Configured unconditionally) + color_cyan "Pre-configuring XFCE default terminal settings for Alacritty..." + + # Making sure alacritty is installed + install_packages alacritty + + # 1. Force initialize the base XDG/XFCE config hierarchy + mkdir -p "$HOME/.config/xfce4" + mkdir -p "$HOME/.config/menus" + + # 2. Configure XFCE's preferred application files + HELPERS_FILE="$HOME/.config/xfce4/helpers.rc" + touch "$HELPERS_FILE" + + for entry in TerminalEmulator TerminalEmulatorCommand; do + if grep -q "^${entry}=" "$HELPERS_FILE"; then + sed -i "s|^${entry}=.*|${entry}=alacritty|" "$HELPERS_FILE" + else + echo "${entry}=alacritty" >> "$HELPERS_FILE" + fi + done + + # 3. Create the standard XDG MIME association files manually + mkdir -p "$HOME/.config" + MIME_FILE="$HOME/.config/mimeapps.list" + touch "$MIME_FILE" + + # Rewrite/initialize the file cleanly with explicit defaults + cat < "$MIME_FILE" +[Default Applications] +x-scheme-handler/terminal=alacritty.desktop +user-extension/x-terminal-emulator=alacritty.desktop +EOF + + # 4. Pre-seed Xfconf properties directly into the XML tree file structure + # This bypasses xfconf-query entirely and drops settings directly into storage + XFCONF_DIR="$HOME/.config/xfce4/xfconf/xfce-perchannel-xml" + mkdir -p "$XFCONF_DIR" + + cat < "$XFCONF_DIR/xfce4-session.xml" + + + + + + +EOF + + color_green "XFCE terminal presets dropped into user skeleton profiles successfully." + +fi +pause_if_debug + +# End of script +color_green "XFCE / SDDM setup completed." \ No newline at end of file diff --git a/fedora/fedora.sh b/fedora/fedora.sh new file mode 100755 index 0000000..aaef925 --- /dev/null +++ b/fedora/fedora.sh @@ -0,0 +1,182 @@ +#!/bin/bash +set -euo pipefail + + +# Map the exported variables to your local names with fallbacks to satisfy set -u +OS="${DETECTED_OS:-fedora}" +DE="${SELECTED_DE:-none}" +TWM="${SELECTED_TWM:-none}" +INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo +color_cyan "Starting Fedora setup..." +echo +color_gray "DE: $DE, TWM: $TWM, Install Level: $INSTALL_LEVEL" + +#------------------------------------------ +# Helper functions +#------------------------------------------ +install_packages() { sudo dnf install -y "$@"; } +is_package_installed() { rpm -q "$@" &>/dev/null; } + +remove_packages() { + local packages_to_remove=() + for pkg in "$@"; do + if is_package_installed "$pkg"; then + packages_to_remove+=("$pkg") + fi + done + + if [ ${#packages_to_remove[@]} -gt 0 ]; then + color_cyan "Removing packages: ${packages_to_remove[*]}" + sudo dnf remove -y "${packages_to_remove[@]}" + fi +} + +#------------------------------------------ +# 0. Ensure base is ready for installation +#------------------------------------------ +if ! command -v curl >/dev/null 2>&1; then + color_yellow "curl is not installed. Installing..." + install_packages curl +fi + +pause_if_debug + +#------------------------------------------ +# 1. Update and Enable Repos +#------------------------------------------ +color_cyan "Optimizing DNF for speed..." + +# 1. Increase parallel downloads (allows downloading multiple packages at once) +# 2. Set dnf to set YES as default instead of NO +sudo dnf config-manager setopt max_parallel_downloads=20 +sudo dnf config-manager setopt defaultyes=True + +color_green "DNF optimized. Refreshing metadata..." +sudo dnf makecache --refresh + +color_cyan "Enabling RPM Fusion repositories for Fedora $(rpm -E %fedora)..." + +# Define the version variable for readability +FEDORA_VER=$(rpm -E %fedora) + +color_yellow "Checking for updates and sources..." +sudo dnf check-update || true + +# Check if flatpak is installed, if not, install it +if ! command -v flatpak &> /dev/null; then + color_yellow "Flatpak not found. Installing..." + sudo dnf install -y flatpak +fi + +color_cyan "Enabling Flathub..." +# Using --if-not-exists is good practice to prevent errors on re-runs +sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + +sudo dnf install -y \ + "https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-${FEDORA_VER}.noarch.rpm" \ + "https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${FEDORA_VER}.noarch.rpm" + +color_cyan "Enabling full Flathub support..." +flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + +# Update the system +color_gray "Updating the system" +echo +sudo dnf update -y + +pause_if_debug + +#------------------------------------------ +# 3. Detected OS / DE / TWM info +#------------------------------------------ +color_yellow "Detected OS / Desktop Environment / Tiling Window Manager" +echo +color_gray "Installing OS-specific packages..." +color_gray "Selected DE: $DE" +color_gray "Selected TWM: $TWM" +color_gray "Installation Level: $INSTALL_LEVEL" + +pause_if_debug + +#------------------------------------------ +# 4. Desktop Environment installation +#------------------------------------------ +case "$DE" in + xfce|plasma|gnome) + color_yellow "Preparing to install $DE" + SCRIPT_NAME="$SCRIPT_DIR/${OS}-${DE}.sh" + if [[ -f "$SCRIPT_NAME" ]]; then + color_cyan "Running $SCRIPT_NAME" + source "$SCRIPT_NAME" + else + color_red "Error: $SCRIPT_NAME not found!" + exit 1 + fi + ;; + none) + color_gray "No Desktop Environment selected, skipping DE installation." + ;; +esac + +pause_if_debug + +#------------------------------------------ +# 5. Tiling Window Manager installation +#------------------------------------------ +case "$TWM" in + chadwm|hyprland|niri) + color_yellow "Installing $TWM" + SCRIPT_NAME="$SCRIPT_DIR/${OS}-${TWM}.sh" + if [[ -f "$SCRIPT_NAME" ]]; then + color_cyan "Running $SCRIPT_NAME" + source "$SCRIPT_NAME" + else + color_red "Error: $SCRIPT_NAME not found!" + exit 1 + fi + ;; + none) + color_gray "No tiling window manager selected, skipping TWM installation." + ;; +esac + +pause_if_debug + +#------------------------------------------ +# 6. Installation level handling +#------------------------------------------ +case "$INSTALL_LEVEL" in + minimal|full|workstation|server) + color_cyan "Installation level: $INSTALL_LEVEL" + SCRIPT_NAME="$SCRIPT_DIR/${OS}-${INSTALL_LEVEL}.sh" + if [[ -f "$SCRIPT_NAME" ]]; then + color_cyan "Running $SCRIPT_NAME" + source "$SCRIPT_NAME" + else + color_red "Error: $SCRIPT_NAME not found!" + exit 1 + fi + ;; +esac + +color_green "Fedora setup complete." +color_red "The installation has finished. A reboot is recommended." +# Reboots are dangerous to automate; we use a shorter timeout and default to No +if read -t 10 -rp "Reboot now? [y/N]: " reboot_choice; then + case "${reboot_choice,,}" in + y|yes) + color_red "Rebooting now." + sudo reboot + ;; + *) + color_yellow "Skipping reboot." + exit 0 + ;; + esac +else + color_yellow "No input detected. Skipping reboot for safety." + exit 0 +fi \ No newline at end of file diff --git a/main_script.sh b/main_script.sh new file mode 100755 index 0000000..1a4e9be --- /dev/null +++ b/main_script.sh @@ -0,0 +1,305 @@ +#!/bin/bash +set -uo pipefail + +#------------------------------------------ +# Color helpers (printf-safe, no tput) +#------------------------------------------ +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +CYAN='\033[0;36m' +PURPLE='\033[0;35m' +BLUE='\033[0;34m' +GRAY='\033[0;37m' +BOLD='\033[1m' +RESET='\033[0m' + +# Disable colors if output is not a terminal +if [ ! -t 1 ]; then + RED='' GREEN='' YELLOW='' CYAN='' PURPLE='' BLUE='' GRAY='' BOLD='' RESET='' +fi + +color_yellow() { printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } +color_cyan() { printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } +color_red() { printf "%b%s%b\n" "$RED" "$*" "$RESET"; } +color_green() { printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } +color_gray() { printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } + +#------------------------------------------ +# Debug Flag Initialization (Outside Guard) +#------------------------------------------ +# Checks if DEBUG_MODE is already true (passed from parent) or via arguments +if [[ "${DEBUG_MODE:-false}" == "true" || "${1:-}" == "-d" || "${1:-}" == "--debug" ]]; then + export DEBUG_MODE=true +else + export DEBUG_MODE=false + set -e # Enable immediate exit on error only if NOT debugging step-by-step +fi + +#------------------------------------------ +# Debug Pause Helper (Outside Guard) +#------------------------------------------ +pause_if_debug() { + if [[ "${DEBUG_MODE:-false}" == "true" ]]; then + echo + color_yellow "----------------------------------------------------------------" + read -rp "Section complete. Press [Enter] to continue, or [q] to abort: " debug_choice + if [[ "${debug_choice,,}" == "q" ]]; then + color_red "Script aborted by user." + exit 1 + fi + color_yellow "----------------------------------------------------------------" + echo + fi +} + +# ========================================== +# GUARD WRAPPER START +# ========================================== +# This entire interactive block is skipped if the script is 'sourced' +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + + clear # Wipe the terminal history view cleanly for the main menu execution + + if [[ "$DEBUG_MODE" == "true" ]]; then + color_red "!!! DEBUG MODE ENABLED !!!" + color_red "The script will pause after each major section." + echo + fi + + #------------------------------------------ + # Script Version 3.0 + #------------------------------------------ + echo + color_yellow "----------------------------------------------------------------" + color_yellow "Script version 3.0" + color_yellow "----------------------------------------------------------------" + echo + + #------------------------------------------ + # OS Detection + #------------------------------------------ + echo + color_yellow "----------------------------------------------------------------" + color_yellow "Start OS Detection" + color_yellow "----------------------------------------------------------------" + echo + + source /etc/os-release + + OS_ID="${ID,,}" + OS_LIKE="${ID_LIKE:-}" + OS_LIKE="${OS_LIKE,,}" + OS_VERSION="${VERSION_ID:-unknown}" + OS_PRETTY="$PRETTY_NAME" + OS="" + + case "$OS_ID" in + arch) OS="arch" ;; + debian) OS="debian" ;; + ubuntu) OS="ubuntu" ;; + fedora) OS="fedora" ;; + *) + if [[ "$OS_LIKE" == *"ubuntu"* ]]; then + OS="ubuntu" + elif [[ "$OS_LIKE" == *"arch"* ]]; then + OS="arch" + elif [[ "$OS_LIKE" == *"debian"* ]]; then + OS="debian" + elif [[ "$OS_LIKE" == *"fedora"* || "$OS_LIKE" == *"rhel"* ]]; then + OS="fedora" + fi + ;; + esac + + if [[ -n "$OS" ]]; then + color_cyan "----------------------------------------------------------------" + color_cyan "Detected OS: $OS_PRETTY" + color_cyan "Version: $OS_VERSION" + color_cyan "----------------------------------------------------------------" + else + color_red "----------------------------------------------------------------" + color_red "ERROR: Unsupported or unknown Linux distribution." + color_red "Detected: ID=$OS_ID ID_LIKE=${OS_LIKE:-empty}" + color_red "----------------------------------------------------------------" + exit 1 + fi + + pause_if_debug + + #------------------------------------------ + # Desktop Environment Detection / Selection + #------------------------------------------ + echo + color_yellow "----------------------------------------------------------------" + color_yellow "Desktop Environment Selection" + color_yellow "----------------------------------------------------------------" + echo + + DE_RAW="${XDG_CURRENT_DESKTOP:-${DESKTOP_SESSION:-}}" + DE="" + + case "${DE_RAW,,}" in + *xfce*) DE="xfce" ;; + *plasma*|*kde*) DE="plasma" ;; + *gnome*) DE="gnome" ;; + ""|none) DE="" ;; + esac + + if [[ -n "$DE" ]]; then + echo + color_cyan "----------------------------------------------------------------" + color_cyan "Detected Desktop Environment: $DE (${DE_RAW:-unknown})" + color_cyan "----------------------------------------------------------------" + else + echo + color_gray "No Desktop Environment detected. Select one to install:" + echo + while true; do + echo " 1) XFCE" + echo " 2) Plasma" + echo " 3) GNOME" + echo " x) None (default)" + if ! read -t 15 -rp "Enter choice [1/2/3/x] (default: x): " choice; then + choice="x" + fi + + case "${choice,,}" in + 1) DE="xfce"; break ;; + 2) DE="plasma"; break ;; + 3) DE="gnome"; break ;; + x|"") DE="none"; break ;; + *) echo "Invalid option. Please enter 1, 2, 3, or x." ;; + esac + done + echo + color_cyan "----------------------------------------------------------------" + color_cyan "Selected Desktop Environment: $DE" + color_cyan "----------------------------------------------------------------" + fi + + pause_if_debug + + #------------------------------------------ + # Tiling Window Manager Selection + #------------------------------------------ + echo + color_yellow "----------------------------------------------------------------" + color_yellow "Tiling WM Selection" + color_yellow "----------------------------------------------------------------" + echo + + while true; do + echo + color_gray "Select a tiling window manager:" + echo + echo " 1) CHADWM" + echo " 2) Hyprland" + echo " 3) Niri" + echo " x) None (default)" + if ! read -t 15 -rp "Enter choice [1/2/3/x] (default: x): " choice; then + choice="x" + fi + + case "${choice,,}" in + 1) TWM="chadwm"; break ;; + 2) TWM="hyprland"; break ;; + 3) TWM="niri"; break ;; + x|"") TWM="none"; break ;; + *) echo "Invalid option. Please enter 1, 2, 3 or x." ;; + esac + done + + echo + color_cyan "----------------------------------------------------------------" + color_cyan "Selected Tiling WM: $TWM" + color_cyan "----------------------------------------------------------------" + + pause_if_debug + + #------------------------------------------ + # Installation Level Selection + #------------------------------------------ + echo + color_yellow "----------------------------------------------------------------" + color_yellow "Installation Level Selection" + color_yellow "----------------------------------------------------------------" + echo + + while true; do + echo + color_gray "Select installation level:" + echo + echo " 1) minimal" + echo " 2) full" + if ! read -t 15 -rp "Enter choice [1/2] (default: 1): " choice; then + choice="1" + fi + + case "$choice" in + 1|"") INSTALL_LEVEL="minimal"; break ;; + 2) INSTALL_LEVEL="full"; break ;; + *) echo "Invalid option. Please enter 1 or 2." ;; + esac + done + + echo + color_cyan "----------------------------------------------------------------" + color_cyan "Selected Installation Level: $INSTALL_LEVEL" + color_cyan "----------------------------------------------------------------" + + pause_if_debug + + #------------------------------------------ + # Export selections for OS script + #------------------------------------------ + export DETECTED_OS="$OS" + export DETECTED_DE="$DE_RAW" + export SELECTED_DE="$DE" + export SELECTED_TWM="$TWM" + export INSTALL_LEVEL + + #------------------------------------------ + # Determine OS script + #------------------------------------------ + case "$OS" in + debian) OS_SCRIPT="./debian/debian.sh" ;; + ubuntu) OS_SCRIPT="./ubuntu/ubuntu.sh" ;; + arch) OS_SCRIPT="./arch/arch.sh" ;; + fedora) OS_SCRIPT="./fedora/fedora.sh" ;; + *) + color_red "No OS script available for $OS" + exit 1 + ;; + esac + + #------------------------------------------ + # Preflight check & run (Using source) + #------------------------------------------ + if [[ ! -f "$OS_SCRIPT" ]]; then + color_red "ERROR: OS script not found: $OS_SCRIPT" + exit 1 + fi + + if [[ ! -x "$OS_SCRIPT" ]]; then + chmod +x "$OS_SCRIPT" + fi + + echo + color_cyan "Running OS script: $OS_SCRIPT" + + # Crucial change: We source the script instead of launching it via 'bash' + source "$OS_SCRIPT" || { + color_red "ERROR: OS script failed: $OS_SCRIPT" + exit 1 + } + + echo + color_yellow "----------------------------------------------------------------" + color_yellow "End Detection" + color_yellow "----------------------------------------------------------------" + +# ========================================== +# GUARD WRAPPER END +# ========================================== +fi \ No newline at end of file diff --git a/v2/ubuntu.sh b/ubuntu/ubuntu.sh similarity index 100% rename from v2/ubuntu.sh rename to ubuntu/ubuntu.sh diff --git a/v1/0-setup-linux.sh b/v1/0-setup-linux.sh deleted file mode 100755 index 0d0c29f..0000000 --- a/v1/0-setup-linux.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start OS Detection" -echo "################################################################" -tput sgr0 -echo - -# Detect OS and set flags -OS="" -if grep -qi "arch" /etc/os-release; then - OS="arch" -elif grep -qi "debian" /etc/os-release; then - OS="debian" -fi - -# If unknown, exit -if [[ -z "$OS" ]]; then - tput setaf 1 - echo "################################################################################" - echo "ERROR: Unsupported or unknown Linux distribution." - echo "This script only supports Arch-based or Debian-based systems." - echo "################################################################################" - tput sgr0 - exit 1 -fi - -# Show detected OS -tput setaf 6 -echo "################################################################################" -echo "Detected OS: ${OS:-unknown}" -echo "################################################################################" -tput sgr0 - -if [[ "$OS" == "arch" ]]; then - echo "Running Arch Linux setup steps..." - # your pacman install section goes here - sh 1000-arch-base.sh -fi - -if [[ "$OS" == "debian" ]]; then - echo "Running Debian setup steps..." - # your apt install section goes here - bash 1000-debian-base.sh -fi - -if [[ -z "$OS" ]]; then - tput setaf 3 - echo "Warning: Unknown Linux distribution. Script may not work as expected." - tput sgr0 -fi - -tput setaf 3 -echo "################################################################" -echo "End OS Detection" -echo "################################################################" -tput sgr0 \ No newline at end of file diff --git a/v1/1000-arch-base.sh b/v1/1000-arch-base.sh deleted file mode 100755 index e4ced9c..0000000 --- a/v1/1000-arch-base.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start Arch setup" -echo "################################################################" -tput sgr0 -echo - -# Setting installed_dir to base folder of the git-repository -installed_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -# Installing chaotic-aur keys and mirrors -pkg_dir="packages" - -# Ensure directory exists -if [[ ! -d "$pkg_dir" ]]; then - echo "Directory not found: $pkg_dir" - exit 1 -fi - -# Install all local packages using pacman -find "$pkg_dir" -maxdepth 1 -name '*.pkg.tar.zst' -print0 | sudo xargs -0 pacman -U --noconfirm - - -# personal pacman.conf -if [[ ! -f /etc/pacman.conf.starburst ]]; then - echo - tput setaf 2 - echo "################################################################################" - echo "Copying /etc/pacman.conf to /etc/pacman.conf.starburst" - echo "################################################################################" - tput sgr0 - echo - sudo cp -v /etc/pacman.conf /etc/pacman.conf.starburst - echo -else - echo - tput setaf 2 - echo "################################################################################" - echo "Backup already exists: /etc/pacman.conf.starburst" - echo "################################################################################" - tput sgr0 - echo -fi - -sudo cp -v $installed_dir/config-files/pacman.conf /etc/pacman.conf - -echo -tput setaf 2 -echo "################################################################################" -echo "Updating the system - sudo pacman -Syyu" -echo "################################################################################" -tput sgr0 -echo - -sudo pacman -Syyu --noconfirm - -echo -tput setaf 3 -echo "################################################################" -echo "################### fix missing console font" -echo "################################################################" -tput sgr0 -echo - -if grep -q FONT= /etc/vconsole.conf; then - - echo - tput setaf 2 - echo "################################################################" - echo "################### FONT is already set in /etc/vconsole.conf" - echo "################################################################" - tput sgr0 - echo - -else - - tput setaf 2 - echo "################################################################" - echo "################### FONT added to /etc/vconsole.conf" - echo "################################################################" - tput sgr0 - -echo 'FONT=gr737c-8x14' | sudo tee -a /etc/vconsole.conf -fi - - - -sh 1010-select-desktop.sh \ No newline at end of file diff --git a/v1/1000-debian-base.sh b/v1/1000-debian-base.sh deleted file mode 100755 index 42898b0..0000000 --- a/v1/1000-debian-base.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start Debian setup" -echo "################################################################" -tput sgr0 -echo - -# Setting installed_dir to base folder of the git-repository -installed_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -# Installing chaotic-aur keys and mirrors -pkg_dir="packages" - -# Ensure directory exists -if [[ ! -d "$pkg_dir" ]]; then - echo "Directory not found: $pkg_dir" - exit 1 -fi - -echo -tput setaf 2 -echo "################################################################################" -echo "Updating the system - sudo apt update" -echo "################################################################################" -tput sgr0 -echo - -sudo apt update && sudo apt full-upgrade -y - -tput setaf 3 -echo "################################################################" -echo "End current choices" -echo "################################################################" -tput sgr0 - -sh 1010-select-desktop.sh \ No newline at end of file diff --git a/v1/1010-select-desktop.sh b/v1/1010-select-desktop.sh deleted file mode 100755 index 52f1a5d..0000000 --- a/v1/1010-select-desktop.sh +++ /dev/null @@ -1,181 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -if grep -qi "arch" /etc/os-release; then - OS="arch" -elif grep -qi "debian" /etc/os-release; then - OS="debian" -else - echo "Unsupported OS. Exiting." - exit 1 -fi - -echo -tput setaf 3 -echo "################################################################" -echo "################### Select Desktop Environment / Window Manager" -echo "################################################################" -tput sgr0 -echo - -echo -tput setaf 3 -echo "########################################################################" -echo "Which desktop environment do you want to install?" -echo "Choose one of the following options:" -echo -echo "1) XFCE4 minimal" -echo "2) XFCE4 full" -echo "3) XFCE4 workstation" -echo "4) Plasma minimal" -echo "5) Plasma full" -echo "X) None" -echo "########################################################################" -tput sgr0 -echo - -read -r -p "Enter the number of your choice: " choice - -case "$choice" in - 1) - touch /tmp/install-xfce4-minimal - ;; - 2) - touch /tmp/install-xfce4-full - ;; - 3) - touch /tmp/install-xfce4-workstation - ;; - 4) - touch /tmp/install-plasma-minimal - ;; - 5) - touch /tmp/install-plasma-full - ;; - [Xx]) - echo "No desktop environment will be installed." - ;; - *) - tput setaf 1 - echo "Invalid choice. Exiting." - tput sgr0 - exit 1 - ;; -esac - - -echo -tput setaf 3 -echo "########################################################################" -echo "Would you like to install an additional Tiling Window Manager?" -echo "Choose one of the following options:" -echo -echo "1) CHADWM" -echo "2) Hyprland (not possible on VM)" -echo "X) None" -echo "########################################################################" -tput sgr0 -echo - -read -p "Enter the number of your choice: " choice - -case "$choice" in - 1) - touch /tmp/install-chadwm - ;; - 2) - touch /tmp/install-hyprland - ;; - [Xx]) - echo "No desktop environment will be installed." - ;; - *) - tput setaf 1 - echo "Invalid choice. Exiting." - tput sgr0 - exit 1 - ;; -esac - -tput setaf 3 -echo "################################################################" -echo "Starting installation of chosen Desktop Environment" -echo "################################################################" -tput sgr0 - -if [ -f /tmp/install-xfce4-minimal ]; then - bash 1020-$OS* - bash 1030-$OS* - bash 1040-$OS-* - bash 1110-$OS* - bash 1120-$OS* -fi - -if [ -f /tmp/install-xfce4-full ]; then - bash 1020-$OS* - bash 1030-$OS* - bash 1040-$OS-* - bash 1110-$OS-xfce* - bash 1120-$OS-xfce* - bash 1130-$OS-xfce* -fi - -if [ -f /tmp/install-xfce4-workstation ]; then - bash 1020-$OS-* - bash 1030-$OS-* - bash 1040-$OS-* - bash 1110-$OS-xfce* - bash 1120-$OS-xfce* - bash 1130-$OS-xfce* - bash 1140-$OS-xfce* -fi - -if [ -f /tmp/install-plasma-minimal ]; then - bash 1110-$OS-plasma-minimal* -fi - -if [ -f /tmp/install-plasma-full ]; then - bash 1110-$OS-plasma-minimal* - bash 1110-$OS-plasma-full* -fi - -# installation of Tiling Window Managers -if [ -f /tmp/install-chadwm ]; then - bash 1200-$OS-chadwm* -fi - -if [ -f /tmp/install-hyprland ]; then - bash 1120-$OS-hyprland* -fi - -tput setaf 3 -echo "################################################################" -echo "End Arch setup" -echo "################################################################" -tput sgr0 - -tput setaf 3 -echo "################################################################" -echo "Cleaning up" -echo "################################################################" -tput sgr0 - -rm -f /tmp/install-* - -### Run final scripts -#sh 9990-skel.sh - -### DONE \ No newline at end of file diff --git a/v1/1020-arch-remove-apps.sh b/v1/1020-arch-remove-apps.sh deleted file mode 100755 index dbd7e58..0000000 --- a/v1/1020-arch-remove-apps.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 3 -echo "################################################################" -echo "################### Remove unwanted packages" -echo "################################################################" -tput sgr0 -echo - -tput setaf 1; - echo "###############################################################################" - echo "### - KEEP LINUX KERNEL GET RID OF THE OTHER KERNELS" - echo "### - GET RID OF BROADCOM AND REALTEK DRIVERS" - echo "### - GET RID OF CONKYS" - echo "###############################################################################" - tput sgr0 - - #######broadcom and realtek - sudo pacman -Rs broadcom-wl-dkms r8168-dkms rtl8821cu-morrownr-dkms-git --noconfirm - - # Ensure at least one kernel remains - if pacman -Qi linux &> /dev/null && pacman -Qi linux-headers &> /dev/null; then - - # Define all the kernels and their headers you want to remove - KERNELS_TO_REMOVE=( - linux-lts-headers linux-lts - linux-zen-headers linux-zen - linux-hardened-headers linux-hardened - linux-rt-headers linux-rt - linux-rt-lts-headers linux-rt-lts - linux-cachyos-headers linux-cachyos - linux-xanmod-headers linux-xanmod - ) - remove_package() { - local package=$1 - # Check if the package is installed - if pacman -Q $package &> /dev/null; then - echo "$package is installed. Removing..." - sudo pacman -Rns --noconfirm $package - else - echo "$package is not installed." - fi - } - - # Loop over the array and remove each kernel package - for kernel in "${KERNELS_TO_REMOVE[@]}"; do - remove_package "$kernel" - done - - else - echo "Cannot proceed: At least one kernel must remain installed." - fi - - #######conkys - # Array of packages to check - packages=("conky-lua-archers" "arcolinux-conky-collection-git" "arcolinux-conky-collection-plasma-git") - - # Function to check if a package is installed - is_package_installed() { - if pacman -Q "$1" &> /dev/null; then - echo "Package $1 is installed." - return 0 # Success - else - echo "Package $1 is not installed." - return 1 # Failure - fi - } - - # Iterate over each package in the array - for package in "${packages[@]}"; do - if is_package_installed "$package"; then - echo "Removing $package..." - sudo pacman -Rns "$package" --noconfirm - else - echo "$package is not installed, no need to remove." - fi - echo - echo "########################" - echo "Double checking $package" - echo "########################" - echo - if ! is_package_installed "$package"; then - echo "$package is not installed!" - else - echo "$package is still installed. Check manually why not." - fi - done - - echo - tput setaf 3 - echo "########################################################################" - echo "######## Removing the drivers" - echo "########################################################################" - tput sgr0 - echo - - sudo pacman -Rs --noconfirm xf86-video-amdgpu --noconfirm - sudo pacman -Rs --noconfirm xf86-video-ati --noconfirm - sudo pacman -Rs --noconfirm xf86-video-fbdev --noconfirm - sudo pacman -Rs --noconfirm xf86-video-nouveau --noconfirm - sudo pacman -Rs --noconfirm xf86-video-openchrome --noconfirm - sudo pacman -Rs --noconfirm xf86-video-vesa --noconfirm - - sudo systemctl disable tlp.service - sudo pacman -Rs tlp --noconfirm - - sudo pacman -Rs vim vim-runtime --noconfirm - diff --git a/v1/1020-debian-remove-apps.sh b/v1/1020-debian-remove-apps.sh deleted file mode 100755 index 7118717..0000000 --- a/v1/1020-debian-remove-apps.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 3 -echo "################################################################" -echo "################### Remove unwanted packages" -echo "################################################################" -tput sgr0 -echo - -tput setaf 1; - echo "###############################################################################" - echo "### - KEEP LINUX KERNEL GET RID OF THE OTHER KERNELS" - echo "### - GET RID OF BROADCOM AND REALTEK DRIVERS" - echo "###############################################################################" - tput sgr0 - -read -n1 -r -p "Press any key to continue..." key - - echo - echo "############################################################" - echo " Remaining installed kernels:" - echo "############################################################" - - # List installed kernel images - dpkg -l | grep '^ii' | grep 'linux-image-[0-9]' | awk '{print $2, $3}' - - echo - echo "Currently running kernel: $(uname -r)" - -read -n1 -r -p "Press any key to continue..." key - - echo - tput setaf 3 - echo "########################################################################" - echo "######## Removing the drivers" - echo "########################################################################" - tput sgr0 - echo - - sudo apt-get purge -y \ - xserver-xorg-video-amdgpu \ - xserver-xorg-video-ati \ - xserver-xorg-video-fbdev \ - xserver-xorg-video-nouveau \ - xserver-xorg-video-openchrome \ - xserver-xorg-video-vesa - sudo apt-get autoremove -y - -read -n1 -r -p "Press any key to continue..." key - - sudo systemctl disable --now tlp.service - sudo apt-get purge -y tlp - sudo apt-get autoremove -y - -read -n1 -r -p "Press any key to continue..." key - - sudo apt-get purge -y vim vim-runtime vim-common vim-tiny - sudo apt-get autoremove -y \ No newline at end of file diff --git a/v1/1030-arch-base.sh b/v1/1030-arch-base.sh deleted file mode 100755 index cd8ad33..0000000 --- a/v1/1030-arch-base.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start Arch setup" -echo "################################################################" -tput sgr0 -echoþ - -echo -tput setaf 2 -echo "################################################################################" -echo "Installing much needed software" -echo "################################################################################" -tput sgr0 -echo - -#firmwares -sudo pacman -S --noconfirm --needed aic94xx-firmware linux-firmware-qlogic upd72020x-fw wd719x-firmware mkinitcpio-firmware - -#fonts -sudo pacman -S --noconfirm --needed font-manager adobe-source-sans-fonts noto-fonts ttf-bitstream-vera ttf-dejavu ttf-droid ttf-hack ttf-inconsolata ttf-liberation ttf-roboto ttf-roboto-mono ttf-ubuntu-font-family terminus-font awesome-terminal-fonts ttf-jetbrains-mono-nerd - -#tools -sudo pacman -S --noconfirm --needed wget curl nano fastfetch lolcat bash-completion starship alacritty hwinfo lshw reflector expac betterlockscreen pamac-aur avahi -if [ ! -f /usr/bin/duf ]; then - sudo pacman -S --noconfirm --needed duf -fi -sudo pacman -S --noconfirm --needed man-db man-pages pacmanlogviewer paru-git yay-git thunar thunar-archive-plugin thunar-volman tree xdg-user-dirs polkit-gnome rate-mirrors rsync time bat ntp nss-mdns - -#disk-tools -sudo pacman -S --noconfirm --needed baobab gvfs-smb hddtemp squashfs-tools -#sudo pacman -S --noconfirm --needed gvfs-dnssd the_silver_searcher gnome-disk-utility - -#archive-managers -sudo pacman -S --noconfirm --needed zip gzip p7zip unace unrar unzip file-roller - -#theming -sudo pacman -S --noconfirm --needed bibata-cursor-theme-bin feh -#sudo pacman -S --noconfirm --needed breeze-icons sardi-flat-colora-variations-icons-git - -#enable services -sudo systemctl enable avahi-daemon.service -sudo systemctl enable ntpd.service - -#Run service that will discard unused blocks on mounted filesystems. This is useful for solid-state drives (SSDs) and thinly-provisioned storage. -echo -echo "Enable fstrim timer" -sudo systemctl enable fstrim.timer - -echo -echo "################################################################" -echo "Getting latest /etc/nsswitch.conf" -echo "################################################################" -echo -sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.bak -sudo wget https://raw.githubusercontent.com/yurikuit/nemesis/refs/heads/main/Personal/settings/nsswitch/nsswitch.conf -O $workdir/etc/nsswitch.conf - - -echo -tput setaf 3 -echo "########################################################################" -echo "Detecting virtualization platform..." -echo "########################################################################" -tput sgr0 -echo - -virt_type=$(systemd-detect-virt) - -case "$virt_type" in - kvm) - echo "Detected KVM. Installing qemu-guest-agent..." - sudo pacman -S --noconfirm --needed qemu-guest-agent spice-vdagent - sudo systemctl enable qemu-guest-agent.service - ;; - oracle) - echo "Detected VirtualBox. Installing virtualbox-guest-utils..." - sudo pacman -S --noconfirm --needed virtualbox-guest-utils - sudo systemctl enable vboxservice.service - ;; - none) - echo "No virtualization detected. Skipping guest utilities." - ;; - *) - echo "Virtualization detected: $virt_type, but no install routine defined." - ;; -esac - -tput setaf 3 -echo "################################################################" -echo "End base setup" -echo "################################################################" -tput sgr0 diff --git a/v1/1030-debian-base.sh b/v1/1030-debian-base.sh deleted file mode 100755 index f86f616..0000000 --- a/v1/1030-debian-base.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start Arch setup" -echo "################################################################" -tput sgr0 -echoþ - -echo -tput setaf 2 -echo "################################################################################" -echo "Installing much needed software" -echo "################################################################################" -tput sgr0 -echo - -#firmwares -sudo apt-get install -y dkms linux-headers-$(uname -r) - -read -n1 -r -p "Press any key to continue..." key - -#fonts -sudo apt install -y font-manager adobe-source-sans-fonts noto-fonts ttf-bitstream-vera ttf-dejavu ttf-droid ttf-hack ttf-inconsolata ttf-liberation ttf-roboto ttf-roboto-mono ttf-ubuntu-font-family terminus-font awesome-terminal-fonts ttf-jetbrains-mono-nerd - -read -n1 -r -p "Press any key to continue..." key - -#tools -sudo apt install -y wget curl nano fastfetch lolcat bash-completion starship alacritty hwinfo lshw reflector expac betterlockscreen pamac-aur avahi -if [ ! -f /usr/bin/duf ]; then - sudo apt install -y duf -fi -sudo apt install -y man-db man-pages thunar thunar-archive-plugin thunar-volman tree xdg-user-dirs polkit-gnome rate-mirrors rsync time bat ntp nss-mdns - -read -n1 -r -p "Press any key to continue..." key - -#disk-tools -sudo apt install -y gvfs-smb squashfs-tools - -read -n1 -r -p "Press any key to continue..." key - -#archive-managers -sudo apt install -y zip gzip p7zip unace unrar unzip file-roller - -read -n1 -r -p "Press any key to continue..." key - -#theming -sudo apt install -y bibata-cursor-theme-bin feh - -read -n1 -r -p "Press any key to continue..." key - -#enable services -sudo systemctl enable avahi-daemon.service -sudo systemctl enable ntpd.service - -read -n1 -r -p "Press any key to continue..." key - -#Run service that will discard unused blocks on mounted filesystems. This is useful for solid-state drives (SSDs) and thinly-provisioned storage. -echo -echo "Enable fstrim timer" -sudo systemctl enable fstrim.timer - -read -n1 -r -p "Press any key to continue..." key - -echo -echo "################################################################" -echo "Getting latest /etc/nsswitch.conf" -echo "################################################################" -echo -sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.bak -sudo wget https://raw.githubusercontent.com/yurikuit/nemesis/refs/heads/main/Personal/settings/nsswitch/nsswitch.conf -O $workdir/etc/nsswitch.conf - -read -n1 -r -p "Press any key to continue..." key - -echo -tput setaf 3 -echo "########################################################################" -echo "Detecting virtualization platform..." -echo "########################################################################" -tput sgr0 -echo - -virt_type=$(systemd-detect-virt) - -case "$virt_type" in - kvm) - echo "Detected KVM. Installing qemu-guest-agent..." - sudo apt install -y qemu-guest-agent spice-vdagent - sudo systemctl enable qemu-guest-agent.service - ;; - oracle) - echo "Detected VirtualBox. Installing virtualbox-guest-utils..." - sudo apt install -y virtualbox-guest-utils - sudo systemctl enable vboxservice.service - ;; - none) - echo "No virtualization detected. Skipping guest utilities." - ;; - *) - echo "Virtualization detected: $virt_type, but no install routine defined." - ;; -esac - -tput setaf 3 -echo "################################################################" -echo "End base setup" -echo "################################################################" -tput sgr0 diff --git a/v1/1040-arch-core-apps.sh b/v1/1040-arch-core-apps.sh deleted file mode 100755 index 16f6bd5..0000000 --- a/v1/1040-arch-core-apps.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Core software" -echo "########################################################################" -tput sgr0 -echo -sudo pacman -S --noconfirm --needed edu-rofi-git -sudo pacman -S --noconfirm --needed edu-rofi-themes-git - -# All the software below will be installed on all desktops -sudo pacman -S --noconfirm --needed archlinux-tools dconf-editor devtools hardinfo2 hw-probe logrotate lsb-release powertop inxi acpi plocate most namcap nm-connection-editor python-pylint python-pywal -#sudo pacman -S --noconfirm --needed nomacs - -tput setaf 6 -echo "##############################################################" -echo "################### $(basename $0) done" -echo "##############################################################" -tput sgr0 -echo \ No newline at end of file diff --git a/v1/1040-debian-core-apps.sh b/v1/1040-debian-core-apps.sh deleted file mode 100755 index 0e251e4..0000000 --- a/v1/1040-debian-core-apps.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Core software" -echo "########################################################################" -tput sgr0 -echo - -# All the software below will be installed on all desktops -sudo apt install -y dconf-editor build-essential hardinfo hw-probe logrotate lsb-release powertop inxi acpi plocate most network-manager-gnome python3-pylint python3-pywal module-assistent - -tput setaf 6 -echo "##############################################################" -echo "################### $(basename $0) done" -echo "##############################################################" -tput sgr0 -echo \ No newline at end of file diff --git a/v1/1110-xfce-minimal.sh b/v1/1110-xfce-minimal.sh deleted file mode 100755 index eab833c..0000000 --- a/v1/1110-xfce-minimal.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/bash - -if [ "$DISTRO" = "arch" ]; then - set -euo pipefail -else - set -e -fi - -################################################################# -# Colors -# tput setaf 0 = black, 1 = red, 2 = green, 3 = yellow -# tput setaf 4 = blue, 5 = purple, 6 = cyan, 7 = gray -################################################################# - -. /etc/os-release -DISTRO=$ID - -installed_dir="$(dirname "$(readlink -f "$0")")" - -################################################################# -# Debug mode -################################################################# -if [ "${DEBUG:-false}" = true ]; then - echo - echo "------------------------------------------------------------" - echo "Running $(basename "$0")" - echo "------------------------------------------------------------" - echo - read -n 1 -s -r -p "Debug mode is on. Press any key to continue..." - echo -fi - -################################################################# -# Functions for package management -################################################################# -install_pkgs() { - case "$DISTRO" in - arch) - sudo pacman -S --noconfirm --needed "$@" - ;; - debian|ubuntu) - sudo apt-get update - sudo apt-get install --no-install-recommends -y "$@" - ;; - esac -} - -remove_pkgs() { - case "$DISTRO" in - arch) - sudo pacman -Rs --noconfirm "$@" - ;; - debian|ubuntu) - sudo apt-get remove -y "$@" - ;; - esac -} - -################################################################# -# Install XFCE and SDDM -################################################################# -echo -tput setaf 2 -echo "########################################################################" -echo "################### Install XFCE4 Minimal" -echo "########################################################################" -tput sgr0 -echo - -if [ "$DISTRO" = "arch" ]; then - install_pkgs xfce4 xfce4-goodies sddm - remove_pkgs mousepad parole xfburn xfce4-screenshooter xfce4-notes-plugin -else - install_pkgs xfce4 xfce4-goodies sddm - remove_pkgs mousepad parole xfburn xfce4-screenshooter xfce4-notes -fi - -################################################################# -# Create directories (skel + user) -################################################################# -echo -tput setaf 2 -echo "########################################################################" -echo "################### Creating directories" -echo "########################################################################" -tput sgr0 -echo - -sudo mkdir -p /etc/skel/.config/xfce4/{panel,xfconf} -mkdir -p \ - "$HOME"/{.bin,.fonts,.icons,.themes,DATA} \ - "$HOME/.local/share/"{icons,themes,applications} \ - "$HOME/.config/"{xfce4,autostart,xfce4/xfconf,gtk-{3.0,4.0},variety,fish,neofetch} - -################################################################# -# Enable SDDM -################################################################# -echo -tput setaf 6 -echo "##############################################################" -echo "################### Enabling SDDM" -echo "##############################################################" -tput sgr0 -echo - -sudo systemctl disable lightdm.service 2>/dev/null || true -sudo systemctl enable sddm.service - -################################################################# -# Done -################################################################# -echo -tput setaf 6 -echo "##############################################################" -echo "################### $(basename "$0") done" -echo "##############################################################" -tput sgr0 -echo diff --git a/v1/1120_arch-xfce-minimal-core.sh b/v1/1120_arch-xfce-minimal-core.sh deleted file mode 100755 index 47cb3fd..0000000 --- a/v1/1120_arch-xfce-minimal-core.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Install XFCE4 minimal Core Software" -echo "########################################################################" -tput sgr0 -echo - -#settings -sudo pacman -S --noconfirm --needed yuku-dot-files-git yuku-sddm-simplicity-git yuku-flat-remix-dark-git -#sudo pacman -S --noconfirm --needed edu-shells-git edu-xfce-git - -#theming -sudo pacman -S --noconfirm --needed arc-gtk-theme hardcode-fixer-git qt5-quickcontrols qt5-quickcontrols2 -#sudo pacman -S --noconfirm --needed surfn-icons-git - -#tools -sudo pacman -S --noconfirm --needed archlinux-logout-git arandr catfish dmenu galculator networkmanager network-manager-applet networkmanager-openvpn numlockx pavucontrol playerctl xcolor xorg-xkill gparted -#sudo pacman -S --noconfirm --needed nitrogen diff --git a/v1/1130-arch-xfce-full-core.sh b/v1/1130-arch-xfce-full-core.sh deleted file mode 100755 index 1abce32..0000000 --- a/v1/1130-arch-xfce-full-core.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Install XFCE4 Full Core Software" -echo "########################################################################" -tput sgr0 -echo - -#internet -sudo pacman -S --noconfirm --needed chromium - - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Configure XFCE4-settings" -echo "########################################################################" -tput sgr0 -echo - -echo -echo "Setting bashrc" -echo -sudo cp -v /etc/skel/.bashrc /etc/skel/.bashrc.starburst -sudo cp -rf $installed_dir/assets/.bashrc /etc/skel/.bashrc - -echo -tput setaf 6 -echo "##############################################################" -echo "################### $(basename $0) done" -echo "##############################################################" -tput sgr0 -echo \ No newline at end of file diff --git a/v1/1140-arch-xfce-full-ws.sh b/v1/1140-arch-xfce-full-ws.sh deleted file mode 100755 index 7cfde6a..0000000 --- a/v1/1140-arch-xfce-full-ws.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Install XFCE4 Full Workstation" -echo "########################################################################" -tput sgr0 -echo - -#editors -sudo pacman -S --noconfirm --needed code - -#internet -sudo pacman -Rs --noconfirm chromium -sudo pacman -S --noconfirm --needed google-chrome brave-bin insync -#sudo pacman -S --noconfirm --needed discord firefox - -#theming -#sudo pacman -S --noconfirm --needed variety - -#media -#sudo pacman -S --noconfirm --needed gimp inkscape spotify lollypop -sudo pacman -S --noconfirm --needed flameshot-git vlc - -#shells -sudo pacman -S --noconfirm --needed fish zsh zsh-completions zsh-syntax-highlighting oh-my-zsh-git - -#system-tools -#sudo pacman -S --noconfirm --needed base-devel - -#tools -#sudo pacman -S --noconfirm --needed gitahead-git -sudo pacman -S --noconfirm --needed wttr system-config-printer -sudo pacman -S --noconfirm --needed ripgrep meld btop htop hwinfo lshw reflector expac sublime-text-4 -if [ ! -f /usr/bin/duf ]; then - sudo pacman -S --noconfirm --needed duf -fi -sudo pacman -S --noconfirm --needed man-db man-pages pacmanlogviewer paru-git yay-git thunar thunar-archive-plugin thunar-volman tree xdg-user-dirs polkit-gnome rate-mirrors rsync time bat ntp nss-mdns diff --git a/v1/1200-arch-chadwm.sh b/v1/1200-arch-chadwm.sh deleted file mode 100755 index 1328d2b..0000000 --- a/v1/1200-arch-chadwm.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -################################################################################################################################## - -if [ "$DEBUG" = true ]; then - echo - echo "------------------------------------------------------------" - echo "Running $(basename $0)" - echo "------------------------------------------------------------" - echo - read -n 1 -s -r -p "Debug mode is on. Press any key to continue..." - echo -fi - -################################################################################################################################## - -func_install() { - if pacman -Qi $1 &> /dev/null; then - tput setaf 2 - echo "#######################################################################################" - echo "################## The package "$1" is already installed" - echo "#######################################################################################" - echo - tput sgr0 - else - tput setaf 3 - echo "#######################################################################################" - echo "################## Installing package " $1 - echo "#######################################################################################" - echo - tput sgr0 - sudo pacman -S --noconfirm --needed $1 - fi -} - -func_install_chadwm() { - - echo - tput setaf 2 - echo "########################################################################" - echo "################### Install chadwm" - echo "########################################################################" - tput sgr0 - echo - - list=( - alacritty - archlinux-logout-git - edu-chadwm-git - autorandr - dash - dmenu - eww - feh - gcc - gvfs - lolcat - lxappearance-gtk3 - make - picom - polkit-gnome - rofi-lbonn-wayland - sxhkd - thunar - thunar-archive-plugin - thunar-volman - ttf-hack - ttf-jetbrains-mono-nerd - ttf-meslo-nerd-font-powerlevel10k - volumeicon - xfce4-notifyd - xfce4-power-manager - xfce4-screenshooter - xfce4-settings - xfce4-taskmanager - xfce4-terminal - xorg-xsetroot - ) - - count=0 - - for name in "${list[@]}" ; do - count=$[count+1] - tput setaf 3;echo "Installing package nr. "$count " " $name;tput sgr0; - func_install $name - done -} - -echo -tput setaf 2 -echo "########################################################################" -echo "################### Let us install Chadwm" -echo "########################################################################" -tput sgr0 -echo - -func_install_chadwm - -echo -tput setaf 6 -echo "##############################################################" -echo "################### $(basename $0) done" -echo "##############################################################" -tput sgr0 -echo \ No newline at end of file diff --git a/v1/9990-skel.sh b/v1/9990-skel.sh deleted file mode 100755 index 6cac3db..0000000 --- a/v1/9990-skel.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################################## - -installed_dir=$(dirname $(readlink -f $(basename `pwd`))) - -################################################################################################################################## - -if [ "$DEBUG" = true ]; then - echo - echo "------------------------------------------------------------" - echo "Running $(basename $0)" - echo "------------------------------------------------------------" - echo - read -n 1 -s -r -p "Debug mode is on. Press any key to continue..." - echo -fi - -################################################################################################################################## - -echo -tput setaf 3 -echo "########################################################################" -echo "FINAL SKEL" -echo "Copying all files and folders from /etc/skel to ~" -echo "First we make a backup of .config" -echo "Wait for it ...." -echo "########################################################################" -tput sgr0 -echo - -cp -Rf ~/.config ~/.config-backup-$(date +%Y.%m.%d-%H.%M.%S) -cp -arf /etc/skel/. ~ - -echo -tput setaf 6 -echo "##############################################################" -echo "################### $(basename $0) done" -echo "##############################################################" -tput sgr0 -echo diff --git a/v1/assets/.bashrc b/v1/assets/.bashrc deleted file mode 100644 index 7da553e..0000000 --- a/v1/assets/.bashrc +++ /dev/null @@ -1,326 +0,0 @@ -### EXPORT ### -export EDITOR='nano' -export VISUAL='nano' -export HISTCONTROL=ignoreboth:erasedups -export PAGER='most' - -PS1='[\u@\h \W]\$ ' - -# If not running interactively, don't do anything -[[ $- != *i* ]] && return - -#ignore upper and lowercase when TAB completion -bind "set completion-ignore-case on" - -### ALIASES ### - -#list -alias ls='ls --color=auto' -alias la='ls -a' -alias ll='ls -alFh' -alias l='ls' -alias l.="ls -A | grep -E '^\.'" -alias listdir="ls -d */ > list" - -#pacman -alias sps='sudo pacman -S' -alias spr='sudo pacman -R' -alias sprs='sudo pacman -Rs' -alias sprdd='sudo pacman -Rdd' -alias spqo='sudo pacman -Qo' -alias spsii='sudo pacman -Sii' - -# show the list of packages that need this package - depends mpv as example -function_depends() { - search=$(echo "$1") - sudo pacman -Sii $search | grep "Required" | sed -e "s/Required By : //g" | sed -e "s/ /\n/g" - } - -alias depends='function_depends' - -#fix obvious typo's -alias cd..='cd ..' - -## Colorize the grep command output for ease of use (good for log files)## -alias grep='grep --color=auto' -alias egrep='grep -E --color=auto' -alias fgrep='grep -F --color=auto' - -#readable output -alias df='df -h' - -#setlocale -alias setlocale="sudo localectl set-locale LANG=en_US.UTF-8" - -#pacman unlock -alias unlock="sudo rm /var/lib/pacman/db.lck" -alias rmpacmanlock="sudo rm /var/lib/pacman/db.lck" - -#arcolinux logout unlock -alias rmlogoutlock="sudo rm /tmp/arcologout.lock" - -#which graphical card is working -alias whichvga="/usr/local/bin/arcolinux-which-vga" - -#free -alias free="free -mt" - -#continue download -alias wget="wget -c" - -#userlist -alias userlist="cut -d: -f1 /etc/passwd | sort" - -#merge new settings -alias merge="xrdb -merge ~/.Xresources" - -# Aliases for software managment -# pacman or pm -alias pacman='sudo pacman --color auto' -alias update='sudo pacman -Syyu' -alias upd='sudo pacman -Syyu' - -# paru as aur helper - updates everything -alias pksyua="paru -Syu --noconfirm" -alias upall="paru -Syu --noconfirm" -alias upa="paru -Syu --noconfirm" - -#ps -alias psa="ps auxf" -alias psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" - -#grub update -alias update-grub="sudo grub-mkconfig -o /boot/grub/grub.cfg" -alias grub-update="sudo grub-mkconfig -o /boot/grub/grub.cfg" -#grub issue 08/2022 -alias install-grub-efi="sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArcoLinux" - -#add new fonts -alias update-fc='sudo fc-cache -fv' - -#copy/paste all content of /etc/skel over to home folder - backup of config created - beware -#skel alias has been replaced with a script at /usr/local/bin/skel - -#backup contents of /etc/skel to hidden backup folder in home/user -alias bupskel='cp -Rf /etc/skel ~/.skel-backup-$(date +%Y.%m.%d-%H.%M.%S)' - -#copy shell configs -alias cb='cp /etc/skel/.bashrc ~/.bashrc && exec bash' -alias cz='cp /etc/skel/.zshrc ~/.zshrc && echo "Copied."' -alias cf='cp /etc/skel/.config/fish/config.fish ~/.config/fish/config.fish && echo "Copied."' - -#switch between bash and zsh -alias tobash="sudo chsh $USER -s /bin/bash && echo 'Now log out.'" -alias tozsh="sudo chsh $USER -s /bin/zsh && echo 'Now log out.'" -alias tofish="sudo chsh $USER -s /bin/fish && echo 'Now log out.'" - -# kill commands -# quickly kill conkies -alias kc='killall conky' -# quickly kill polybar -alias kp='killall polybar' -# quickly kill picom -alias kpi='killall picom' - -# hardware info --short -alias hw="hwinfo --short" - -# fastfetch --short -alias ff="fastfetch | lolcat" - -# audio check pulseaudio or pipewire -alias audio="pactl info | grep 'Server Name'" - -# skip integrity check -alias paruskip='paru -S --mflags --skipinteg' -alias yayskip='yay -S --mflags --skipinteg' -alias trizenskip='trizen -S --skipinteg' - -# check vulnerabilities microcode -alias microcode='grep . /sys/devices/system/cpu/vulnerabilities/*' - -#approximation of how old your hardware is -alias howold="sudo lshw | grep -B 3 -A 8 BIOS" - -#check cpu -alias cpu="cpuid -i | grep uarch | head -n 1" - -#get fastest mirrors in your neighborhood -alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist" -alias mirrord="sudo reflector --latest 30 --number 10 --sort delay --save /etc/pacman.d/mirrorlist" -alias mirrors="sudo reflector --latest 30 --number 10 --sort score --save /etc/pacman.d/mirrorlist" -alias mirrora="sudo reflector --latest 30 --number 10 --sort age --save /etc/pacman.d/mirrorlist" -#our experimental - best option for the moment -alias mirrorx="sudo reflector --age 6 --latest 20 --fastest 20 --threads 5 --sort rate --protocol https --save /etc/pacman.d/mirrorlist" -alias mirrorxx="sudo reflector --age 6 --latest 20 --fastest 20 --threads 20 --sort rate --protocol https --save /etc/pacman.d/mirrorlist" -alias ram='rate-mirrors --allow-root --disable-comments arch | sudo tee /etc/pacman.d/mirrorlist' -alias rams='rate-mirrors --allow-root --disable-comments --protocol https arch | sudo tee /etc/pacman.d/mirrorlist' - -#Recent Installed Packages -alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl" -alias riplong="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -3000 | nl" - -#Cleanup orphaned packages -alias cleanup='sudo pacman -Rns $(pacman -Qtdq)' - -# This will generate a list of explicitly installed packages -alias list="sudo pacman -Qqe" -#This will generate a list of explicitly installed packages without dependencies -alias listt="sudo pacman -Qqet" -# list of AUR packages -alias listaur="sudo pacman -Qqem" -# add > list at the end to write to a file - -# install packages from list -# pacman -S --needed - < my-list-of-packages.txt - -#clear -alias clean="clear; seq 1 $(tput cols) | sort -R | sparklines | lolcat" -alias cls="clear; seq 1 $(tput cols) | sort -R | sparklines | lolcat" - -#search content with ripgrep -alias rg="rg --sort path" - -#get the error messages from journalctl -alias jctl="journalctl -p 3 -xb" - -#nano for important configuration files -#know what you do in these files -alias npacman="sudo $EDITOR /etc/pacman.conf" -alias ngrub="sudo $EDITOR /etc/default/grub" -alias nconfgrub="sudo $EDITOR /boot/grub/grub.cfg" -alias nmakepkg="sudo $EDITOR /etc/makepkg.conf" -alias nmkinitcpio="sudo $EDITOR /etc/mkinitcpio.conf" -alias nmirrorlist="sudo $EDITOR /etc/pacman.d/mirrorlist" -alias nsddm="sudo $EDITOR /etc/sddm.conf" -alias nsddmk="sudo $EDITOR /etc/sddm.conf.d/kde_settings.conf" -alias nsddmd="sudo $EDITOR /usr/lib/sddm/sddm.conf.d/default.conf" -alias nfstab="sudo $EDITOR /etc/fstab" -alias nnsswitch="sudo $EDITOR /etc/nsswitch.conf" -alias nsamba="sudo $EDITOR /etc/samba/smb.conf" -alias ngnupgconf="sudo $EDITOR /etc/pacman.d/gnupg/gpg.conf" -alias nhosts="sudo $EDITOR /etc/hosts" -alias nhostname="sudo $EDITOR /etc/hostname" -alias nresolv="sudo $EDITOR /etc/resolv.conf" -alias nb="$EDITOR ~/.bashrc" -alias nz="$EDITOR ~/.zshrc" -alias nf="$EDITOR ~/.config/fish/config.fish" -alias nfastfetch="$EDITOR ~/.config/fastfetch/config.jsonc" -alias nvconsole="sudo $EDITOR /etc/vconsole.conf" -alias nenvironment="sudo $EDITOR /etc/environment" -alias nloader="sudo $EDITOR /boot/efi/loader/loader.conf" -alias nalacritty="nano /home/$USER/.config/alacritty/alacritty.toml" -alias nemptty="sudo $EDITOR /etc/emptty/conf" - -#reading logs with bat -alias lpacman="bat /var/log/pacman.log" -alias lxorg="bat /var/log/Xorg.0.log" -alias lxorgo="bat /var/log/Xorg.0.log.old" - -#reading logs with sublime-text-4 -alias spac="subl /etc/pacman.conf" - -#gpg -#verify signature for isos -alias gpg-check="gpg2 --keyserver-options auto-key-retrieve --verify" -alias fix-gpg-check="gpg2 --keyserver-options auto-key-retrieve --verify" -#receive the key of a developer -alias gpg-retrieve="gpg2 --keyserver-options auto-key-retrieve --receive-keys" -alias fix-gpg-retrieve="gpg2 --keyserver-options auto-key-retrieve --receive-keys" -alias fix-keyserver="[ -d ~/.gnupg ] || mkdir ~/.gnupg ; cp /etc/pacman.d/gnupg/gpg.conf ~/.gnupg/ ; echo 'done'" - -#fixes -alias fix-permissions="sudo chown -R $USER:$USER ~/.config ~/.local" -alias keyfix="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias key-fix="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias keys-fix="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias fixkey="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias fixkeys="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias fix-key="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias fix-keys="/usr/local/bin/arcolinux-fix-pacman-databases-and-keys" -alias fix-pacman-conf="/usr/local/bin/arcolinux-fix-pacman-conf" -alias fix-pacman-keyserver="/usr/local/bin/arcolinux-fix-pacman-gpg-conf" -alias fix-grub="sudo /usr/local/bin/arcolinux-fix-grub" -alias fixgrub="sudo /usr/local/bin/arcolinux-fix-grub" -alias fix-archlinux-mirrors="/usr/local/bin/arcolinux-fix-archlinux-servers" -alias fix-arcolinux-mirrors="/usr/local/bin/arcolinux-fix-arcolinux-servers" - -#maintenance -alias big="expac -H M '%m\t%n' | sort -h | nl" -alias downgrada="sudo downgrade --ala-url https://ant.seedhost.eu/arcolinux/" - -#systeminfo -alias sysfailed="systemctl list-units --failed" - -#shutdown or reboot -alias ssn="sudo shutdown now" -alias sr="reboot" - -#update betterlockscreen images -alias bls="betterlockscreen -u /usr/share/backgrounds/" - -#give the list of all installed desktops - xsessions desktops -alias xd="ls /usr/share/xsessions" -alias xdw="ls /usr/share/wayland-sessions" - -#give a list of the kernels installed -alias kernel="ls /usr/lib/modules" -alias kernels="ls /usr/lib/modules" - -# # ex = EXtractor for all kinds of archives -# # usage: ex -ex () -{ - if [ -f $1 ] ; then - case $1 in - *.tar.bz2) tar xjf $1 ;; - *.tar.gz) tar xzf $1 ;; - *.bz2) bunzip2 $1 ;; - *.rar) unrar x $1 ;; - *.gz) gunzip $1 ;; - *.tar) tar xf $1 ;; - *.tbz2) tar xjf $1 ;; - *.tgz) tar xzf $1 ;; - *.zip) unzip $1 ;; - *.Z) uncompress $1;; - *.7z) 7z x $1 ;; - *.deb) ar x $1 ;; - *.tar.xz) tar xf $1 ;; - *.tar.zst) tar xf $1 ;; - *) echo "'$1' cannot be extracted via ex()" ;; - esac - else - echo "'$1' is not a valid file" - fi -} - -#wayland aliases -alias wsimplescreen="wf-recorder -a" -alias wsimplescreenrecorder="wf-recorder -a -c h264_vaapi -C aac -d /dev/dri/renderD128 --file=recording.mp4" - -#btrfs aliases -alias btrfsfs="sudo btrfs filesystem df /" -alias btrfsli="sudo btrfs su li / -t" - -#snapper aliases -alias snapcroot="sudo snapper -c root create-config /" -alias snapchome="sudo snapper -c home create-config /home" -alias snapli="sudo snapper list" -alias snapcr="sudo snapper -c root create" -alias snapch="sudo snapper -c home create" - -#git -alias rmgitcache="rm -r ~/.cache/git" -alias grh="git reset --hard" - -#pamac -alias pamac-unlock="sudo rm /var/tmp/pamac/dbs/db.lock" - -#create a file called .bashrc-personal and put all your personal aliases -#in there. They will not be overwritten by skel. - -[[ -f ~/.bashrc-personal ]] && . ~/.bashrc-personal - -# reporting tools - install when not installed -fastfetch | lolcat -#neofetch diff --git a/v1/assets/images/starburst_logo.png b/v1/assets/images/starburst_logo.png deleted file mode 100644 index ba81ef5..0000000 Binary files a/v1/assets/images/starburst_logo.png and /dev/null differ diff --git a/v1/assets/xfce4/helpers.rc b/v1/assets/xfce4/helpers.rc deleted file mode 100644 index e293c41..0000000 --- a/v1/assets/xfce4/helpers.rc +++ /dev/null @@ -1,3 +0,0 @@ -FileManager=Thunar -TerminalEmulator=alacritty -WebBrowser=chromium diff --git a/v1/assets/xfce4/panel/xfce4-clipman-actions.xml b/v1/assets/xfce4/panel/xfce4-clipman-actions.xml deleted file mode 100644 index ba2f9ea..0000000 --- a/v1/assets/xfce4/panel/xfce4-clipman-actions.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - Bugz - bug\s*#?\s*([0-9]+) - 0 - - - GNOME Bug - exo-open https://bugzilla.gnome.org/show_bug.cgi?id=\1 - - - Xfce Bug - exo-open https://bugzilla.xfce.org/show_bug.cgi?id=\1 - - - - - Image - (http|ftp).+\.(jpg|png|gif) - 0 - - - View with Ristretto - ristretto "\0" - - - Edit with Gimp - gimp "\0" - - - - - Long URL - https?://[^\s]{120,} - 0 - - - Shrink the URL - exo-open https://tinyurl.com/create.php?url=\0 - - - - \ No newline at end of file diff --git a/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index d973e35..0000000 --- a/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,751 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index 52e7d0d..0000000 --- a/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index dbeae43..0000000 --- a/v1/assets/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/v1/packages/chaotic-keyring-20230616-1-any.pkg.tar.zst b/v1/packages/chaotic-keyring-20230616-1-any.pkg.tar.zst deleted file mode 100644 index e75313d..0000000 Binary files a/v1/packages/chaotic-keyring-20230616-1-any.pkg.tar.zst and /dev/null differ diff --git a/v1/packages/chaotic-mirrorlist-20240724-3-any.pkg.tar.zst b/v1/packages/chaotic-mirrorlist-20240724-3-any.pkg.tar.zst deleted file mode 100644 index 520aec5..0000000 Binary files a/v1/packages/chaotic-mirrorlist-20240724-3-any.pkg.tar.zst and /dev/null differ diff --git a/v1/xxx-template.sh b/v1/xxx-template.sh deleted file mode 100755 index aed77c3..0000000 --- a/v1/xxx-template.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -#set -e -################################################################################################################## -#tput setaf 0 = black -#tput setaf 1 = red -#tput setaf 2 = green -#tput setaf 3 = yellow -#tput setaf 4 = dark blue -#tput setaf 5 = purple -#tput setaf 6 = cyan -#tput setaf 7 = gray -#tput setaf 8 = light blue -################################################################################################################## - -echo -tput setaf 3 -echo "################################################################" -echo "################### Start Arch setup" -echo "################################################################" -tput sgr0 -echo \ No newline at end of file diff --git a/v2/config-files/pacman.conf b/v2/config-files/pacman.conf deleted file mode 100644 index d9e6046..0000000 --- a/v2/config-files/pacman.conf +++ /dev/null @@ -1,113 +0,0 @@ -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -#HookDir = /etc/pacman.d/hooks/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -L -C - -f -o %o %u -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -Architecture = auto - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -Color -#NoProgressBar -CheckSpace -VerbosePkgLists -ParallelDownloads = 25 -#DownloadUser = alpm -#DisableSandbox -ILoveCandy -DisableDownloadTimeout - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[core-testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -#[extra-testing] -#Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -# If you want to run 32 bit applications on your x86_64 system, -# enable the multilib repositories as required here. - -#[multilib-testing] -#Include = /etc/pacman.d/mirrorlist - -[multilib] -Include = /etc/pacman.d/mirrorlist - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs - -[yuku_repo] -SigLevel = Never -Server = https://yurikuit.github.io/$repo/$arch - -[nemesis_repo] -SigLevel = Never -Server = https://erikdubois.github.io/$repo/$arch - -[chaotic-aur] -SigLevel = Required DatabaseOptional -Include = /etc/pacman.d/chaotic-mirrorlist - diff --git a/v2/fedora-full.sh b/v2/fedora-full.sh deleted file mode 100755 index 4da56d9..0000000 --- a/v2/fedora-full.sh +++ /dev/null @@ -1,170 +0,0 @@ -#!/bin/bash -set -euo pipefail - -########################## -# Color helpers (printf-safe, no tput) -########################## -RED="\033[0;31m" -GREEN="\033[0;32m" -YELLOW="\033[0;33m" -CYAN="\033[0;36m" -GRAY="\033[0;37m" -BOLD="\033[1m" -RESET="\033[0m" - -# Disable colors if output is not a terminal -if [ ! -t 1 ]; then - RED="" GREEN="" YELLOW="" CYAN="" GRAY="" BOLD="" RESET="" -fi - -say_red() { printf "\n"; printf "%b%s%b\n" "$RED" "$*" "$RESET"; } -say_green() { printf "\n"; printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } -say_yellow() { printf "\n"; printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } -say_cyan() { printf "\n"; printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } -say_gray() { printf "\n"; printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } -say_bold() { printf "\n"; printf "%b%s%b\n" "$BOLD" "$*" "$RESET"; } - -########################## -# Use exported variables from main detection script -########################## -OS="${DETECTED_OS}" -DDE="${DETECTED_DE:-}" -DE="${SELECTED_DE:-none}" -TWM="${SELECTED_TWM:-none}" -INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -########################## -# Helper functions -########################## -install_packages() { sudo dnf install -y "$@"; } -is_package_installed() { rpm -q "$@" &>/dev/null; } - -say_yellow "Starting full setup..." - -# Run minimal first -bash "$SCRIPT_DIR/fedora-minimal.sh" - -# Add extra packages -install_packages arandr catfish galculator NetworkManager network-manager-applet NetworkManager-openvpn numlockx pipewire pipewire-alsa pipewire-pulse wireplumber pavucontrol playerctl gparted xfce4-pulseaudio-plugin xfce4-clipman-plugin -# temp disabled packages -# xfce4-indicator-plugin - -# install SDDM-theme -say_yellow "Installing SDDM Theme" - -GIT_DIR="$HOME/git" -REPO_DIR="$GIT_DIR/SilentSDDM" -REPO_URL="https://github.com/uiriansan/SilentSDDM" - -mkdir -p "$GIT_DIR" - -if [ -d "$REPO_DIR/.git" ]; then - echo "SilentSDDM already exists. Updating repository..." - cd "$REPO_DIR" && git pull --rebase -else - echo "Cloning SilentSDDM..." - git clone -b main --depth=1 "$REPO_URL" "$REPO_DIR" -fi - -echo "Running installer..." -cd "$REPO_DIR" || { - echo "Error: Failed to enter $REPO_DIR" >&2 - exit 1 -} - -# Ensure NetworkManager manages all interfaces -say_yellow "Ensuring NetworkManager service is enabled and running..." -sudo systemctl enable --now NetworkManager - -say_yellow "Setting NetworkManager to globally manage all devices..." -sudo tee /etc/NetworkManager/conf.d/10-globally-managed-devices.conf > /dev/null <<'EOF' -[ifupdown] -managed=true - -[keyfile] -unmanaged-devices= -EOF - -say_yellow "Restarting NetworkManager service..." -sudo systemctl restart NetworkManager - -say_yellow "Waiting for NetworkManager to reconnect..." -sleep 15 - -# Enable pipewire -systemctl --user enable pipewire pipewire-pulse wireplumber - -######################################## -# XFCE-specific configuration -######################################## -if [[ "${DE}" == "xfce" || "${DDE}" == "xfce" ]]; then - echo - say_cyan "Applying XFCE defaults: fonts, browser, and terminal..." - - # Ensure xfconf-query exists (for XFCE settings) - if ! command -v xfconf-query >/dev/null 2>&1; then - say_yellow "xfconf-query not found — installing xfce4-settings..." - install_packages xfce4-settings - fi - - # set fonts - # Wait for xfconf to be available (only needed if running inside the same session) - if command -v xfconf-query >/dev/null 2>&1; then - # Interface font (UI) - xfconf-query -c xsettings -p /Gtk/FontName -s "RobotoMono Nerd Font Regular 10" - # Monospace font (terminals, editors) - xfconf-query -c xsettings -p /Gtk/MonospaceFontName -s "RobotoMono Nerd Font Mono Regular 10" - - say_green "XFCE fonts updated successfully!" - else - say_yellow "xfconf-query not found — skipping XFCE font config (will apply at first login)." - fi - - # Set browser default - if command -v chromium >/dev/null 2>&1; then - mkdir -p "$HOME/.config/xfce4/" - HELPERS_FILE="$HOME/.config/xfce4/helpers.rc" - - # Ensure the helpers file exists - touch "$HELPERS_FILE" - - # Update or insert browser entry - if grep -q '^WebBrowser=' "$HELPERS_FILE"; then - sed -i 's|^WebBrowser=.*|WebBrowser=chromium|' "$HELPERS_FILE" - else - echo "WebBrowser=chromium" >> "$HELPERS_FILE" - fi - say_green "XFCE defeault browser set to chromium!" - fi - - # Set default terminal - if command -v alacritty >/dev/null 2>&1; then - mkdir -p "$HOME/.config/xfce4/" - HELPERS_FILE="$HOME/.config/xfce4/helpers.rc" - - touch "$HELPERS_FILE" - - # TerminalEmulator entry - if grep -q '^TerminalEmulator=' "$HELPERS_FILE"; then - sed -i 's|^TerminalEmulator=.*|TerminalEmulator=alacritty|' "$HELPERS_FILE" - else - echo "TerminalEmulator=alacritty" >> "$HELPERS_FILE" - fi - - # TerminalEmulatorCommand entry - if grep -q '^TerminalEmulatorCommand=' "$HELPERS_FILE"; then - sed -i 's|^TerminalEmulatorCommand=.*|TerminalEmulatorCommand=alacritty|' "$HELPERS_FILE" - else - echo "TerminalEmulatorCommand=alacritty" >> "$HELPERS_FILE" - fi - say_green "XFCE defeault terminal set to alacritty!" - fi -fi - -# replace bashrc -say_yellow "making backup of bashrc" -sudo cp -v /etc/skel/.bashrc /etc/skel/.bashrc.starburst - -# End of script -say_green "Full setup completed." diff --git a/v2/fedora-minimal.sh b/v2/fedora-minimal.sh deleted file mode 100755 index e8094b9..0000000 --- a/v2/fedora-minimal.sh +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/bash -set -euo pipefail - -########################## -# Color helpers (printf-safe, no tput) -########################## -RED="\033[0;31m" -GREEN="\033[0;32m" -YELLOW="\033[0;33m" -CYAN="\033[0;36m" -GRAY="\033[0;37m" -BOLD="\033[1m" -RESET="\033[0m" - -# Disable colors if output is not a terminal -if [ ! -t 1 ]; then - RED="" GREEN="" YELLOW="" CYAN="" GRAY="" BOLD="" RESET="" -fi - -say_red() { printf "\n"; printf "%b%s%b\n" "$RED" "$*" "$RESET"; } -say_green() { printf "\n"; printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } -say_yellow() { printf "\n"; printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } -say_cyan() { printf "\n"; printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } -say_gray() { printf "\n"; printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } -say_bold() { printf "\n"; printf "%b%s%b\n" "$BOLD" "$*" "$RESET"; } - -########################## -# Use exported variables from main detection script -########################## -OS="${DETECTED_OS}" -DDE="${DETECTED_DE}" -DE="${SELECTED_DE:-none}" -TWM="${SELECTED_TWM:-none}" -INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -########################## -# Helper functions -########################## -install_packages() { sudo dnf install -y "$@"; } -is_package_installed() { rpm -q "$@" &>/dev/null; } - -########################## -# 1. Base Dependencies & Repos -########################## -say_cyan "Installing base dependencies..." -# dnf-plugins-core is required for COPR -install_packages dnf-plugins-core curl wget git flatpak - -# Enable PeaZip via COPR -say_cyan "Installing PeaZip (Qt6) via official RPM..." -PZ_VER="11.0.0" -PZ_FILE="peazip-${PZ_VER}.LINUX.Qt6-1.x86_64.rpm" -PZ_URL="https://github.com/peazip/PeaZip/releases/download/${PZ_VER}/${PZ_FILE}" -curl -L "$PZ_URL" -o "/tmp/$PZ_FILE" -sudo dnf install -y "/tmp/$PZ_FILE" -rm "/tmp/$PZ_FILE" - -say_green "PeaZip ${PZ_VER} (Qt6) installed successfully." - -########################## -# 2. Main Package Installation -########################## -say_yellow "Installing essential tools..." - -install_packages \ - fastfetch lolcat bash-completion alacritty \ - hwinfo lshw duf chrony polkit-kde-agent-1 \ - man-db tree xdg-user-dirs rsync time bat chromium \ - thunar thunar-archive-plugin thunar-volman \ - baobab gvfs-smb hddtemp squashfs-tools \ - zip gzip p7zip unace unrar file-roller peazip \ - feh gnome-font-viewer dconf-editor hardinfo2 lsb_release \ - powertop inxi acpi plocate nm-connection-editor \ - python3-pylint qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia - -if ! command -v starship &> /dev/null; then - say_cyan "Installing Starship shell prompt..." - curl -sS https://starship.rs/install.sh | sh -s -- -y -fi - -################################# -# 3. Fonts (RobotoMono Nerd Font) -################################# -FONT_DIR="$HOME/.local/share/fonts" -DOWNLOAD_NAME="RobotoMono" -if ! find "$FONT_DIR" -name "*RobotoMonoNerdFont*" | grep -q .; then - say_yellow "Installing ${DOWNLOAD_NAME} Nerd Font..." - mkdir -p "$FONT_DIR" - FONT_ZIP="/tmp/${DOWNLOAD_NAME}.zip" - curl -L "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${DOWNLOAD_NAME}.zip" -o "$FONT_ZIP" - unzip -oq "$FONT_ZIP" -d "$FONT_DIR" - fc-cache -fv - rm "$FONT_ZIP" - say_green "${DOWNLOAD_NAME} installed." -else - say_yellow "RobotoMono Nerd Font already installed." -fi - -################################# -# 4. Chromium Configuration -################################# -CONF="$HOME/.config/chromium-flags.conf" -mkdir -p "$(dirname "$CONF")" -[[ ! -f "$CONF" ]] && touch "$CONF" - -# Add OAuth IDs for Google Sync -# -OAUTH_ID="--oauth2-client-id=77185425430.apps.googleusercontent.com" -OAUTH_SECRET="--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" - -grep -qxF -- "$OAUTH_ID" "$CONF" || echo "$OAUTH_ID" >> "$CONF" -grep -qxF -- "$OAUTH_SECRET" "$CONF" || echo "$OAUTH_SECRET" >> "$CONF" - -say_green "Chromium flags configured." - -################################# -# 5. Enable Services -################################# -# Enable basic services -say_cyan "Enabling services..." -sudo systemctl enable --now fstrim.timer -sudo systemctl enable --now chronyd || true - -say_green "Fedora Minimal setup completed." diff --git a/v2/fedora-niri.sh b/v2/fedora-niri.sh deleted file mode 100755 index b2d66f2..0000000 --- a/v2/fedora-niri.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash -set -euo pipefail - -########################## -# Color helpers (printf-safe, no tput) -########################## -RED="\033[0;31m" -GREEN="\033[0;32m" -YELLOW="\033[0;33m" -CYAN="\033[0;36m" -GRAY="\033[0;37m" -BOLD="\033[1m" -RESET="\033[0m" - -# Disable colors if output is not a terminal -if [ ! -t 1 ]; then - RED="" GREEN="" YELLOW="" CYAN="" GRAY="" BOLD="" RESET="" -fi - -say_red() { printf "\n"; printf "%b%s%b\n" "$RED" "$*" "$RESET"; } -say_green() { printf "\n"; printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } -say_yellow() { printf "\n"; printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } -say_cyan() { printf "\n"; printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } -say_gray() { printf "\n"; printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } -say_bold() { printf "\n"; printf "%b%s%b\n" "$BOLD" "$*" "$RESET"; } - -########################## -# Use exported variables from main detection script -########################## -OS="${DETECTED_OS:-fedora}" -DDE="${DETECTED_DE:-none}" -DE="${SELECTED_DE:-none}" -TWM="${SELECTED_TWM:-none}" -INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -########################## -# Helper functions -########################## -install_packages() { sudo dnf install -y "$@"; } -is_package_installed() { rpm -q "$@" &>/dev/null; } - -detect_de() { - # Check if a desktop session is currently running or XFCE is available - if [ "${XDG_CURRENT_DESKTOP:-}" ]; then - echo "${XDG_CURRENT_DESKTOP,,}" # lowercase the output - elif command -v xfce4-session >/dev/null 2>&1; then - echo "xfce" - else - echo "" - fi -} - -detect_display_manager() { - # Fedora/Systemd way to check the active DM symlink - if [ -L /etc/systemd/system/display-manager.service ]; then - basename "$(readlink /etc/systemd/system/display-manager.service)" | sed 's/\.service//' - else - echo "" - fi -} - -switch_display_manager() { - local target_dm="$1" - local current_dm - current_dm=$(detect_display_manager) - - if [[ "$current_dm" != "$target_dm" ]]; then - if [[ -n "$current_dm" ]]; then - say_yellow "Disabling existing display manager: $current_dm" - sudo systemctl disable "$current_dm" - fi - say_yellow "Enabling $target_dm..." - sudo systemctl enable "$target_dm" - fi - sudo systemctl set-default graphical.target -} - -######################### -# Start installation -########################## -say_yellow "Starting Niri setup..." - -CURRENT_DE="$(detect_de)" -CURRENT_DM="$(detect_display_manager)" - -# Add Terra repo -add_terra_repo() { - if [ ! -f /etc/yum.repos.d/terra.repo ]; then - say_yellow "Adding Terra repository for Noctalia Shell..." - - TMP_FILE="/tmp/terra.repo" - - curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo -o "$TMP_FILE" && - sudo mv "$TMP_FILE" /etc/yum.repos.d/terra.repo - - say_yellow "Clearing DNF cache..." - sudo dnf clean metadata - else - say_gray "Terra repository already configured." - fi -} - -# Core components for Niri & Noctalia setup -NIRI_PACKAGES=(niri fuzzel swaybg swaylock noctalia-shell) - -if [[ -z "$CURRENT_DE" || "$CURRENT_DE" == "none" || "$CURRENT_DE" == "sway" ]]; then - say_cyan "No Desktop Environment detected. Installing Niri + Noctalia Shell..." - - # 1. Add the repo first - add_terra_repo - - # 2. Install everything - install_packages sddm "${NIRI_PACKAGES[@]}" - switch_display_manager "sddm" - - say_green "Niri, Noctalia, and SDDM installed successfully." - -else - say_cyan "Detected existing Desktop Environment: $CURRENT_DE" - - # Always install the window manager packages - install_packages "${NIRI_PACKAGES[@]}" - - if [[ "$CURRENT_DM" == "lightdm" ]]; then - say_yellow "LightDM is currently active. Replacing with SDDM..." - - # Fedora equivalent to purge lightdm safely - sudo dnf remove -y lightdm lightdm-gtk - - install_packages sddm - switch_display_manager "sddm" - - say_green "LightDM removed and replaced with SDDM." - else - say_cyan "Current display manager: ${CURRENT_DM:-none}. Leaving it to handle Niri login sessions." - fi -fi - -# End of script -say_green "Niri / SDDM setup completed." \ No newline at end of file diff --git a/v2/fedora-workstation.sh b/v2/fedora-workstation.sh deleted file mode 100755 index 76b2392..0000000 --- a/v2/fedora-workstation.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -set -euo pipefail - -########################## -# Color helpers (printf-safe, no tput) -########################## -RED="\033[0;31m" -GREEN="\033[0;32m" -YELLOW="\033[0;33m" -CYAN="\033[0;36m" -GRAY="\033[0;37m" -BOLD="\033[1m" -RESET="\033[0m" - -# Disable colors if output is not a terminal -if [ ! -t 1 ]; then - RED="" GREEN="" YELLOW="" CYAN="" GRAY="" BOLD="" RESET="" -fi - -say_red() { printf "\n"; printf "%b%s%b\n" "$RED" "$*" "$RESET"; } -say_green() { printf "\n"; printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } -say_yellow() { printf "\n"; printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } -say_cyan() { printf "\n"; printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } -say_gray() { printf "\n"; printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } -say_bold() { printf "\n"; printf "%b%s%b\n" "$BOLD" "$*" "$RESET"; } - -########################## -# Use exported variables from main detection script -########################## -OS="${DETECTED_OS}" -DDE="${DETECTED_DE:-}" -DE="${SELECTED_DE:-none}" -TWM="${SELECTED_TWM:-none}" -INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -########################## -# Helper functions -########################## -install_packages() { sudo dnf install -y "$@"; } -is_package_installed() { rpm -q "$@" &>/dev/null; } - -say_yellow "Starting Workstation setup..." - -# Run full first -bash "$SCRIPT_DIR/fedora-full.sh" - -# Add extra packages -install_packages git libreoffice -# gitahead-git - -# editors -install_packages konsole -# temp removed packages: -# sublime-text-4 vscodium -flatpak install -y flathub com.vscodium.codium - -#internet -# install_packages -# temp removed packages -# google-chrome discord firefox insync brave-bin - -#theming -# variety - -#media -install_packages mpv -# temp removed packages -# vlc gimp inkscape spotify lollypop mpv-full mpv-git flameshot-git - -#shells -install_packages zsh zsh-syntax-highlighting -# temp removed packages -# fish oh-my-zsh-git zsh-completions - -#system-tools -install_packages @development-tools git curl wget cmake ninja-build pkgconf-pkg-config - -#tools -install_packages system-config-printer system-config-printer-applet system-config-printer-libs ripgrep meld btop htop hwinfo lshw -# temp removed packages -# wttr - -# End of script -say_green "Workstation setup completed." - -###### TODO -### autostart flameshot tray icon -### autostart insync tray icon diff --git a/v2/fedora.sh b/v2/fedora.sh deleted file mode 100755 index 6820573..0000000 --- a/v2/fedora.sh +++ /dev/null @@ -1,218 +0,0 @@ -#!/bin/bash -set -euo pipefail - -########################## -# Color helpers (printf-safe, no tput) -########################## -RED="\033[0;31m" -GREEN="\033[0;32m" -YELLOW="\033[0;33m" -CYAN="\033[0;36m" -GRAY="\033[0;37m" -BOLD="\033[1m" -RESET="\033[0m" - -# Disable colors if output is not a terminal -if [ ! -t 1 ]; then - RED="" GREEN="" YELLOW="" CYAN="" GRAY="" BOLD="" RESET="" -fi - -say_red() { printf "\n"; printf "%b%s%b\n" "$RED" "$*" "$RESET"; } -say_green() { printf "\n"; printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } -say_yellow() { printf "\n"; printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } -say_cyan() { printf "\n"; printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } -say_gray() { printf "\n"; printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } -say_bold() { printf "\n"; printf "%b%s%b\n" "$BOLD" "$*" "$RESET"; } - -########################## -# Use exported variables from main detection script -########################## -OS="${DETECTED_OS}" -DDE="${DETECTED_DE}" -DE="${SELECTED_DE:-none}" -TWM="${SELECTED_TWM:-none}" -INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -echo -say_cyan "Starting Fedora setup..." -echo -say_gray "DE: $DE, TWM: $TWM, Install Level: $INSTALL_LEVEL" - -########################## -# Helper functions -########################## -install_packages() { sudo dnf install -y "$@"; } -is_package_installed() { rpm -q "$@" &>/dev/null; } - -remove_packages() { - local packages_to_remove=() - for pkg in "$@"; do - if is_package_installed "$pkg"; then - packages_to_remove+=("$pkg") - fi - done - - if [ ${#packages_to_remove[@]} -gt 0 ]; then - say_cyan "Removing packages: ${packages_to_remove[*]}" - sudo dnf remove -y "${packages_to_remove[@]}" - fi -} - -########################## -# 0. Ensure base is ready for installation -########################## -installed_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -pkg_dir="packages" - -if [[ ! -d "$pkg_dir" ]]; then - say_red "Directory not found: $pkg_dir" - exit 1 -fi - -if ! command -v curl >/dev/null 2>&1; then - say_yellow "curl is not installed. Installing..." - install_packages curl -fi - -########################## -# 1. Update and Enable Repos -########################## -say_cyan "Optimizing DNF for speed..." - -# 1. Enable fastest mirror (lowest latency) -# 2. Increase parallel downloads (allows downloading multiple packages at once) -# 3. Set a minimum rate to drop slow mirrors automatically -sudo dnf config-manager setopt fastestmirror=1 -sudo dnf config-manager setopt max_parallel_downloads=20 - -say_green "DNF optimized. Refreshing metadata..." -sudo dnf makecache --refresh - -say_cyan "Enabling RPM Fusion repositories for Fedora $(rpm -E %fedora)..." - -# Define the version variable for readability -FEDORA_VER=$(rpm -E %fedora) - -say_yellow "Checking for updates and sources..." -sudo dnf check-update || true - -# Check if flatpak is installed, if not, install it -if ! command -v flatpak &> /dev/null; then - say_yellow "Flatpak not found. Installing..." - sudo dnf install -y flatpak -fi - -say_cyan "Enabling Flathub..." -# Using --if-not-exists is good practice to prevent errors on re-runs -sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo - -sudo dnf install -y \ - "https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-${FEDORA_VER}.noarch.rpm" \ - "https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${FEDORA_VER}.noarch.rpm" - -say_cyan "Enabling full Flathub support..." -flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo - -# Update the system -say_gray "Updating the system" -echo -sudo dnf update -y - -########################## -# 2. Fix missing console font -########################## -say_yellow "Fix missing console font" - -if grep -q FONT= /etc/vconsole.conf; then - say_green "Font is already set in /etc/vconsole.conf" -else - say_green "Setting console font in /etc/vconsole.conf" - echo 'FONT=gr737c-8x14' | sudo tee -a /etc/vconsole.conf -fi - -########################## -# 3. Detected OS / DE / TWM info -########################## -say_yellow "Detected OS / Desktop Environment / Tiling Window Manager" -echo -say_gray "Installing OS-specific packages..." -say_gray "Selected DE: $DE" -say_gray "Selected TWM: $TWM" -say_gray "Installation Level: $INSTALL_LEVEL" - -########################## -# 4. Desktop Environment installation -########################## -case "$DE" in - xfce|plasma|gnome) - say_yellow "Preparing to install $DE..." - SCRIPT_NAME="$SCRIPT_DIR/${OS}-${DE}.sh" - if [[ -f "$SCRIPT_NAME" ]]; then - say_cyan "Running $SCRIPT_NAME..." - bash "$SCRIPT_NAME" - else - say_red "Error: $SCRIPT_NAME not found!" - exit 1 - fi - ;; - none) - say_gray "No Desktop Environment selected, skipping DE installation." - ;; -esac - -########################## -# 5. Tiling Window Manager installation -########################## -case "$TWM" in - chadwm|hyprland|niri) - say_yellow "Installing $TWM..." - SCRIPT_NAME="$SCRIPT_DIR/${OS}-${TWM}.sh" - if [[ -f "$SCRIPT_NAME" ]]; then - say_cyan "Running $SCRIPT_NAME..." - bash "$SCRIPT_NAME" - else - say_red "Error: $SCRIPT_NAME not found!" - exit 1 - fi - ;; - none) - say_gray "No tiling window manager selected, skipping TWM installation." - ;; -esac - -########################## -# 6. Installation level handling -########################## -case "$INSTALL_LEVEL" in - minimal|full|workstation|server) - say_cyan "Installation level: $INSTALL_LEVEL" - SCRIPT_NAME="$SCRIPT_DIR/${OS}-${INSTALL_LEVEL}.sh" - if [[ -f "$SCRIPT_NAME" ]]; then - say_cyan "Running $SCRIPT_NAME..." - bash "$SCRIPT_NAME" - else - say_red "Error: $SCRIPT_NAME not found!" - exit 1 - fi - ;; -esac - -say_green "Fedora setup complete." -say_red "The installation has finished. A reboot is recommended." -# Reboots are dangerous to automate; we use a shorter timeout and default to No -if read -t 10 -rp "Reboot now? [y/N]: " reboot_choice; then - case "${reboot_choice,,}" in - y|yes) - say_red "Rebooting now." - sudo reboot - ;; - *) - say_yellow "Skipping reboot." - exit 0 - ;; - esac -else - say_yellow "\nNo input detected. Skipping reboot for safety." - exit 0 -fi \ No newline at end of file