#!/bin/bash # # Copyright 2018, F123 Consulting, # Copyright 2018, Kyle, # Copyright 2018, Storm Dragon # # This is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free # Software Foundation; either version 3, or (at your option) any later # version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this package; see the file COPYING. If not, write to the Free # Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # #--code-- # This is a helper script for update-f123light to perform incremental updates based on a timestamp # It will not be installed to a running system # # Incremental updates are only to be performed if their timestamp is later than # /etc/timestamp-f123light on the system being updated. # Each update should be formatted as # # update yymmddhhmm && { # do-something here; # do-something-else here; # } # If an update requires a reboot, add # reboot=true # anywhere in the update to prompt the user to reboot afterward # # Any new updates should be placed at the end of this file for best readability # It is recommended to skip a line between updates, also for readability # To get the current date and time in the format, use the command # \date '+%y%m%d%H%M' # Remember to add a ; after each line of the update group. # Log writing function log() { while read -r line ; do echo "$line" | sudo tee -a "$logFile" &> /dev/null done } logFile="/var/log/incremental-updates" # Clear previous logs echo -n | sudo tee "$logFile" &> /dev/null update 1811072200 && { # Install Pianobar Pandora client on builds last updated before 7 November 2018 sudo pacman -S pianobar-git --noconfirm --needed &> /dev/null; } update 1811142036 && { sudo pacman -S --noconfirm --needed python-magic-wormhole &> /dev/null; } update 1811150406 && { # There has been a change to the pacman repository URL. # Copy the new pacman.conf file to all systems built earlier than 11 November 2018; sudo cp /tmp/files-F123Light/files/etc/pacman.conf /etc; } update 1811161939 && { # Install the update-f123light package; sudo pacman -Sy --noconfirm --needed --overwrite /usr/bin/update-f123light update-f123light &> /dev/null; } update 1811191827 && { # Blacklist non-working bluetooth module; echo "blacklist btsdio" | sudo tee -a /etc/modules-load.d/bluetooth &> /dev/null; # Disable bluetooth service; sudo systemctl -q disable bluetooth; # Enable new bluetooth service; sudo systemctl -q enable brcm43438.service; # Add RHVoice module to speech-dispatcher; grep -q 'rhvoice.conf' /etc/speech-dispatcher/speechd.conf || sudo sed -i 's/"espeak-mbrola-generic\.conf"/"espeak-mbrola-generic.conf"\n AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf"/' /etc/speech-dispatcher/speechd.conf; # Create placeholder file for RHVoice; echo '# Placeholder for the rhvoice module.' | sudo tee /etc/speech-dispatcher/modules/rhvoice.conf &> /dev/null; } update 1811281732 && { # Re-enable the bluetooth service; sudo systemctl -q enable --now bluetooth; # Power on the bluetooth adapter; bluetoothctl power on &> /dev/null; # Put the bluetooth settings file in place; sudo cp /tmp/files-F123Light/files/etc/bluetooth/main.conf /etc/bluetooth/main.conf; # configure speech-dispatcher to use pulseaudio.; sudo sed -i 's/^\s*AudioOutputMethod.*/ AudioOutputMethod pulse/' /etc/speech-dispatcher/speechd.conf; } update 1901151236 && { # We will need to reboot after this completes for all the groups and users stuff to take affect, and to get pulse started.; reboot=true; # Create users and groups; sudo groupadd --system pulse &> /dev/null; sudo groupadd --system pulse-access &> /dev/null; sudo useradd --system -g pulse -G audio -d /var/run/pulse -m -s /bin/nologin pulse &> /dev/null; sudo gpasswd -a pulse lp &> /dev/null; sudo gpasswd -a root pulse-access &> /dev/null; for u in $(awk -v OFS=' ' -F':' '{ if ( $3 >= 1000 && $3 <= 60000 && $7 != "/sbin/nologin" && $7 != "/bin/false" ) print $1 ; }' /etc/passwd) ; do sudo gpasswd -a $u pulse-access &> /dev/null;done; # Install new packages; sudo pacman -Sy --noconfirm --needed pulseaudio-bluetooth pulseaudio-alsa &> /dev/null; # move configuration files into place; sudo cp -r /tmp/files-F123Light/files/etc/pulse/ /etc; sudo cp -ru /tmp/files-F123Light/files/etc/dbus-1/ /etc; sudo systemctl -q enable pulseaudio; echo "default_driver=pulse" | sudo tee /etc/libao.conf &> /dev/null } update 1902200926 && { # Update nano configuration file; sudo cp /tmp/files-F123Light/files/etc/nanorc /etc; # Update Fenrir keyboard layouts; sudo cp -r /tmp/files-F123Light/files/etc/fenrirscreenreader/keyboard /etc/fenrirscreenreader; # Switch from speech-dispatcher-git to the newer stable version 0.9.0; # Remove old unneeded packages.; # To prevent errors, only remove one package per statement; sudo pacman -Rdd --noconfirm brltty &> /dev/null; sudo pacman -Rdd --noconfirm lios-git &> /dev/null; sudo pacman -Rdd --noconfirm python-espeak &> /dev/null; sudo pacman -Rdd --noconfirm speech-dispatcher-git &> /dev/null; # Install new packages.; sudo pacman -Sy --noconfirm --needed brltty-minimal cfh-client irssi speech-dispatcher &> /dev/null; # Copy .pacsave for speech-dispatcher into place.; sudo cp /etc/speech-dispatcher/speechd.conf.pacsave /etc/speech-dispatcher/speechd.conf &> /dev/null; } update 1903140649 && { # Install the horseshoes package.; sudo pacman -Sy --needed --noconfirm horseshoes-git |& log; # Install tesseract data packages.; sudo pacman -S --needed --noconfirm tesseract-data-{ara,eng,fra,por,spa} |& log; # Update Fenrir keyboard layouts; sudo cp -rv /tmp/files-F123Light/files/etc/fenrirscreenreader/keyboard /etc/fenrirscreenreader |& log; } update 1903300948 && { # Update nanorc; sudo cp /tmp/files-F123Light/files/etc/nanorc /etc; } update 1903311817 && { # uninstall python-ipaddress and python-magic-wormhole; sudo pacman -Rdd --noconfirm python-ipaddress python-magic-wormhole |& log; # Install magic-wormhole; sudo pacman -Sy --noconfirm --needed magic-wormhole |& log; } update 1904030652 && { # uninstall mumble-snapshot, youtube-viewer-git and youtube-dl-git; sudo pacman -Rdd --noconfirm mumble-snapshot |& log; sudo pacman -Rdd --noconfirm youtube-dl-git |& log; sudo pacman -Rdd --noconfirm youtube-viewer-git |& log; # Install barnard; sudo pacman -Sy --noconfirm --needed barnard-git |& log; # Install youtube-dl; sudo pacman -Sy --noconfirm --needed youtube-dl |& log; # Install youtube-viewer; sudo pacman -Sy --noconfirm --needed youtube-viewer |& log; # Fix commented out bookmark 8 in fenrir keyboard layouts.; sudo sed -i 's/^#KEY_FENRIR,KEY_8=bookmark_8/KEY_FENRIR,KEY_8=bookmark_8/' /etc/fenrirscreenreader/keyboard/*.conf; } update 1904151249 && { # Install nice editor (ne); sudo pacman -Sy --noconfirm --needed ne |& log; # Install dbus-broker; sudo pacman -Sy --noconfirm --needed dbus-broker |& log; # configure dbus-broker for all users; sudo systemctl enable --now dbus-broker.service |& log; sudo systemctl --global enable dbus-broker.service |& log; } update 1905021427 && { # Keep track of the date so we can set it after systemd breaks it; currentDate="$(date)"; # Install systemd packages; sudo pacman -Sy --noconfirm systemd systemd-libs systemd-sysvcompat |& log; # Fix the date so DNS doesn't break.; sudo date -s "$currentDate"; } update 1905061331 && { # Install Dragonfm-git; sudo pacman -Sy --noconfirm --needed dragonfm-git |& log; } update 1906122152 && { # Make sure timedatectl is sett to sync time.; sudo timedatectl set-ntp ttrue; } update 1907211627 && { # Create dnssec override.; sudo cp -rv /tmp/files-F123Light/files/etc/systemd/resolved.conf.d /etc/systemd/ |& log }