feat: make main script more automatic

This commit is contained in:
Krzysztof Rudnicki 2025-08-01 13:14:34 +02:00
parent aa1270b6c9
commit fd7cd3f893
6 changed files with 229 additions and 41 deletions

View File

@ -191,22 +191,22 @@ fi
cp mpv.conf "$HOME/.config/mpv/mpv.conf"
if [ ! -d "$HOME/.oh-my-zsh" ]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
yes | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
else
echo "Oh My Zsh is already installed"
fi
cd ~/linux-configuration
hosts/install.sh
sudo hosts/install.sh
i3-configuration/install.sh
scripts/install_pacman_wrapper.sh
scripts/nvidia_troubleshoots.sh
scripts/setup_activitywatch.sh
scripts/setup_media_organizer.sh
scripts/setup_pc_startup_monitor.sh
scripts/setup_periodic_system.sh
scripts/setup_thorium_startup.sh
protonup
scripts/nvidia_troubleshoot.sh
sudo scripts/setup_activitywatch.sh
sudo scripts/setup_media_organizer.sh
sudo scripts/setup_pc_startup_monitor.sh
yes | sudo scripts/setup_periodic_system.sh
sudo scripts/setup_thorium_startup.sh
yes | protonup
yes | sudo pacman -Syuu
#cd unreal-engine

View File

@ -74,27 +74,47 @@ asciidoctor
man-db
# git for large files like LLM
git-lfs
#
# hell for servers
nodejs
# hell for desktop
electron
# better npm
yarn
# for compatibility of some packages
openssl-1.1
# needed for some packages
tk
# needed for some packages jpeg
jasper
# opencv dependency
libdc1394
# needed for a lot of packages
cblas
# Parsing Expression Grammar Template Library consider removing
pegtl
# needed for a lot of packages
hdf5
# needed for a lot of packages
proj
# needed for a lot of packages
gcc-fortran
# needed for a lot of packages
python-nose
# needed for a lot of packages
python-pyproject-metadata
# needed for a lot of packages
meson-python
# needed for a lot of packages
lapack
# needed for a lot of packages
python-numpy
# needed for a lot of packages
openmpi
# needed for a lot of packages
boost
# needed for some packages
suitesparse
# needed for some packages
vtk
junit
java-hamcrest

View File

@ -5,6 +5,31 @@
set -e # Exit on any error
# Default to non-interactive mode
INTERACTIVE_MODE=false
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-i|--interactive)
INTERACTIVE_MODE=true
shift
;;
-h|--help)
echo "Usage: $0 [OPTIONS]"
echo "Options:"
echo " -i, --interactive Enable interactive prompts (default: auto-yes)"
echo " -h, --help Show this help message"
exit 0
;;
*)
echo "Unknown option: $1"
echo "Use -h or --help for usage information"
exit 1
;;
esac
done
# Function to check and request sudo privileges
check_sudo() {
if [[ $EUID -ne 0 ]]; then
@ -14,7 +39,7 @@ check_sudo() {
fi
}
# Check for sudo privileges first
# Check for sudo privileges after argument parsing
check_sudo "$@"
echo "NVIDIA Comprehensive Troubleshooter & GSP Disabler"
@ -22,6 +47,11 @@ echo "=================================================="
echo "Current Date: $(date)"
echo "User: $USER"
echo "Original user: ${SUDO_USER:-$USER}"
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
echo "Mode: Interactive (prompts enabled)"
else
echo "Mode: Automatic (auto-yes, use --interactive for prompts)"
fi
# Check if nvidia module is loaded
if ! lsmod | grep -q nvidia; then
@ -40,7 +70,7 @@ mkdir -p "$MODPROBE_DIR"
# Create the configuration file
cat > "$CONFIG_FILE" << EOF
# Disable NVIDIA GSP firmware to prevent Vulkan failures and crashes
# Created by disable-gsp-firmware.sh on $(date)
# Created by nvidia_troubleshoot.sh on $(date)
options nvidia NVreg_EnableGpuFirmware=0
EOF
@ -75,7 +105,7 @@ configure_xorg() {
# Create NVIDIA-specific configuration
cat > "$NVIDIA_CONF" << EOF
# NVIDIA configuration with RenderAccel disabled
# Created by disable-gsp-firmware.sh on $(date)
# Created by nvidia_troubleshoot.sh on $(date)
Section "Device"
Identifier "NVIDIA Card"
Driver "nvidia"
@ -99,7 +129,7 @@ configure_gcc_workaround() {
if ! grep -q "IGNORE_CC_MISMATCH" "$PROFILE_FILE"; then
echo "" >> "$PROFILE_FILE"
echo "# NVIDIA GCC version mismatch workaround" >> "$PROFILE_FILE"
echo "# Added by disable-gsp-firmware.sh on $(date)" >> "$PROFILE_FILE"
echo "# Added by nvidia_troubleshoot.sh on $(date)" >> "$PROFILE_FILE"
echo "export IGNORE_CC_MISMATCH=1" >> "$PROFILE_FILE"
echo "✓ Added IGNORE_CC_MISMATCH=1 to $PROFILE_FILE"
else
@ -120,10 +150,19 @@ install_pyroveil() {
echo "like Final Fantasy VII Rebirth. Pyroveil can work around these problems."
echo ""
read -p "Would you like to install Pyroveil? (y/N): " -n 1 -r
echo
local install_pyroveil=true
if [[ $REPLY =~ ^[Yy]$ ]]; then
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
read -p "Would you like to install Pyroveil? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
install_pyroveil=false
fi
else
echo "Auto-installing Pyroveil (use --interactive to prompt)"
fi
if [[ "$install_pyroveil" == "true" ]]; then
# Check for required dependencies
local missing_deps=()

View File

@ -5,10 +5,40 @@
set -e # Exit on any error
# Default to non-interactive mode
INTERACTIVE_MODE=false
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-i|--interactive)
INTERACTIVE_MODE=true
shift
;;
-h|--help)
echo "Usage: $0 [OPTIONS]"
echo "Options:"
echo " -i, --interactive Enable interactive prompts (default: auto-yes)"
echo " -h, --help Show this help message"
exit 0
;;
*)
echo "Unknown option: $1"
echo "Use -h or --help for usage information"
exit 1
;;
esac
done
echo "PC Startup Time Monitor for Arch Linux"
echo "======================================"
echo "Current Date: $(date)"
echo "User: ${SUDO_USER:-$USER}"
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
echo "Mode: Interactive (prompts enabled)"
else
echo "Mode: Automatic (auto-yes, use --interactive for prompts)"
fi
# Function to check and request sudo privileges
check_sudo() {
@ -492,18 +522,25 @@ confirm_setup() {
echo "- Check time: 8:30 AM daily"
echo "- Action: Show warning if PC wasn't started in expected window"
echo ""
read -p "Do you want to proceed? (y/N): " confirm
case "$confirm" in
[yY]|[yY][eE][sS])
echo "Proceeding with setup..."
return 0
;;
*)
echo "Setup cancelled."
exit 0
;;
esac
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
read -p "Do you want to proceed? (y/N): " confirm
case "$confirm" in
[yY]|[yY][eE][sS])
echo "Proceeding with setup..."
return 0
;;
*)
echo "Setup cancelled."
exit 0
;;
esac
else
echo "Auto-proceeding with setup (use --interactive to prompt)"
echo "Proceeding with setup..."
return 0
fi
}
# Main execution flow

View File

@ -5,6 +5,31 @@
set -e # Exit on any error
# Default to non-interactive mode
INTERACTIVE_MODE=false
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-i|--interactive)
INTERACTIVE_MODE=true
shift
;;
-h|--help)
echo "Usage: $0 [OPTIONS]"
echo "Options:"
echo " -i, --interactive Enable interactive prompts (default: auto-yes)"
echo " -h, --help Show this help message"
exit 0
;;
*)
echo "Unknown option: $1"
echo "Use -h or --help for usage information"
exit 1
;;
esac
done
# Function to check and request sudo privileges
check_sudo() {
if [[ $EUID -ne 0 ]]; then
@ -14,7 +39,7 @@ check_sudo() {
fi
}
# Check for sudo privileges first
# Check for sudo privileges after argument parsing
check_sudo "$@"
echo "Periodic System Setup - Pacman Wrapper & Hosts File"
@ -22,6 +47,11 @@ echo "==================================================="
echo "Current Date: $(date)"
echo "User: $USER"
echo "Original user: ${SUDO_USER:-$USER}"
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
echo "Mode: Interactive (prompts enabled)"
else
echo "Mode: Automatic (auto-yes, use --interactive for prompts)"
fi
# Get the directory where this script is located
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
@ -470,11 +500,21 @@ run_initial_execution() {
echo "9. Running Initial Execution..."
echo "==============================="
echo "Would you like to run the system maintenance now to test the setup?"
read -p "Run initial execution? (y/N): " -n 1 -r
echo
local run_initial=true
if [[ $REPLY =~ ^[Yy]$ ]]; then
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
echo "Would you like to run the system maintenance now to test the setup?"
read -p "Run initial execution? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
run_initial=false
fi
else
echo "Auto-running initial execution to test the setup (use --interactive to prompt)"
fi
if [[ "$run_initial" == "true" ]]; then
echo "Running initial system maintenance..."
/usr/local/bin/periodic-system-maintenance.sh
echo "✓ Initial execution completed"

View File

@ -4,6 +4,31 @@
set -e # Exit on any error
# Default to non-interactive mode
INTERACTIVE_MODE=false
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-i|--interactive)
INTERACTIVE_MODE=true
shift
;;
-h|--help)
echo "Usage: $0 [OPTIONS]"
echo "Options:"
echo " -i, --interactive Enable interactive prompts (default: auto-yes)"
echo " -h, --help Show this help message"
exit 0
;;
*)
echo "Unknown option: $1"
echo "Use -h or --help for usage information"
exit 1
;;
esac
done
# Function to check and request sudo privileges
check_sudo() {
if [[ $EUID -ne 0 ]]; then
@ -13,7 +38,7 @@ check_sudo() {
fi
}
# Check for sudo privileges first
# Check for sudo privileges after argument parsing
check_sudo "$@"
echo "Thorium Browser Auto-Startup Setup"
@ -21,6 +46,11 @@ echo "=================================="
echo "Current Date: $(date)"
echo "User: $USER"
echo "Original user: ${SUDO_USER:-$USER}"
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
echo "Mode: Interactive (prompts enabled)"
else
echo "Mode: Automatic (auto-yes, use --interactive for prompts)"
fi
# Target URL
TARGET_URL="https://www.fitatu.com/app/planner"
@ -68,9 +98,21 @@ check_thorium_browser() {
echo "You can install Thorium browser from:"
echo "https://thorium.rocks/"
echo ""
read -p "Continue anyway? The service will be created but may fail to start (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
local continue_anyway=false
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
read -p "Continue anyway? The service will be created but may fail to start (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
continue_anyway=true
fi
else
echo "Auto-continuing anyway - service will be created but may fail to start (use --interactive to prompt)"
continue_anyway=true
fi
if [[ "$continue_anyway" != true ]]; then
exit 1
fi
fi
@ -363,11 +405,21 @@ test_setup() {
echo "8. Testing Setup..."
echo "=================="
echo "Would you like to test the browser launcher now?"
read -p "Test launch Thorium browser with Fitatu? (y/N): " -n 1 -r
echo
local run_test=true
if [[ $REPLY =~ ^[Yy]$ ]]; then
if [[ "$INTERACTIVE_MODE" == "true" ]]; then
echo "Would you like to test the browser launcher now?"
read -p "Test launch Thorium browser with Fitatu? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
run_test=false
fi
else
echo "Auto-testing the browser launcher (use --interactive to prompt)"
fi
if [[ "$run_test" == "true" ]]; then
echo "Testing browser launch..."
echo "Note: This will open Thorium browser with Fitatu website"