#!/bin/bash

# 1. System update and package installation
echo "Updating system and installing dependencies..."
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y fluidsynth ffmpeg python3-pip libjack-jackd2-dev

# 2. Python libraries installation
echo "Installing Python libraries..."
pip install --user --break-system-packages pydub numpy jack_server jack-client

# 3. Modify JACK buffer in /etc/jackdrc to 192
# Finds the -p pattern followed by any number and replaces it with -p 192
echo "Configuring JACK buffer to 192..."
sudo sed -i 's/-p [0-9]*/-p 192/g' /etc/jackdrc

# 4. Symbolic links and execution privileges
echo "Configuring links and permissions..."
cd /home/patch/LooPyStation/
ln -sf /home/patch/LooPyStation/LooPyStation.sh /home/patch/
ln -sf /home/patch/LooPyStation/stop.sh /home/patch/
chmod +x ./LooPyStation.sh
chmod +x ./stop.sh

# 5. Configure JACK override (Infinite retries)
sudo mkdir -p /etc/systemd/system/jack.service.d/
cat <<EOF | sudo tee /etc/systemd/system/jack.service.d/override.conf
[Unit]
StartLimitIntervalSec=0

[Service]
Restart=on-failure
RestartSec=5s
EOF

# 6. Create service file for LooPyStation
cat <<EOF | sudo tee /etc/systemd/system/LooPyStation.service
[Unit]
Description=Run LooPyStation
After=jack.service

[Service]
ExecStart=/home/patch/LooPyStation/LooPyStation.sh
WorkingDirectory=/home/patch/LooPyStation/
Environment=JACK_PROMISCUOUS_SERVER=1
Environment=JACK_DEFAULT_SERVER=default
User=patch
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

# 7. Configure SUDO NOPASSWD privileges
cat <<EOF | sudo tee /etc/sudoers.d/loopystation-perms
patch ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop pisound-btn
patch ALL=(ALL) NOPASSWD: /usr/bin/systemctl start modep-mod-host.service
patch ALL=(ALL) NOPASSWD: /usr/bin/systemctl start modep-mod-ui.service
EOF
sudo chmod 0440 /etc/sudoers.d/loopystation-perms

# 8. Reload and enable everything
sudo systemctl daemon-reload
sudo systemctl enable LooPyStation.service

echo "Installation and configuration completed successfully with buffer set to 192!"
