From a5e90a588f58a938405bf513d1032955be34028e Mon Sep 17 00:00:00 2001 From: Eino Rauhala <60004820+EinoHR@users.noreply.github.com> Date: Tue, 28 Feb 2023 17:08:29 +0000 Subject: [PATCH] feat: ease customization by reading flatpaks and rpms to install from a recipe.yml. (#79) Co-authored-by: ER Co-authored-by: Marco Ceppi Co-authored-by: Jorge O. Castro --- Containerfile | 16 +++++++--- etc/justfile | 24 ++++++-------- recipe.yml | 13 ++++++++ ublue-firstboot | 85 ++++++++++--------------------------------------- 4 files changed, 49 insertions(+), 89 deletions(-) create mode 100644 recipe.yml diff --git a/Containerfile b/Containerfile index 6a00797..eb5b8ab 100644 --- a/Containerfile +++ b/Containerfile @@ -5,20 +5,26 @@ ARG FEDORA_MAJOR_VERSION=37 FROM quay.io/fedora-ostree-desktops/silverblue:${FEDORA_MAJOR_VERSION} # See https://pagure.io/releng/issue/11047 for final location -# Add Vanilla First Setup -RUN wget https://copr.fedorainfracloud.org/coprs/ublue-os/vanilla-first-setup/repo/fedora-$(rpm -E %fedora)/ublue-os-vanilla-first-setup-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_ublue-os-vanilla-first-setup.repo - COPY etc /etc COPY usr /usr COPY ublue-firstboot /usr/bin +COPY recipe.yml /etc/ublue-recipe.yml + +COPY --from=docker.io/mikefarah/yq /usr/bin/yq /usr/bin/yq RUN rpm-ostree override remove firefox firefox-langpacks && \ - rpm-ostree install distrobox gnome-tweaks just vte291-gtk4-devel vanilla-first-setup && \ + echo "-- Installing RPMs defined in recipe.yml --" && \ + rpm_packages=$(yq '.rpms[]' < /etc/ublue-recipe.yml) && \ + for pkg in $rpm_packages; do \ + echo "Installing: ${pkg}" && \ + rpm-ostree install $pkg; \ + done && \ + echo "---" && \ + sed -i 's/#AutomaticUpdatePolicy.*/AutomaticUpdatePolicy=stage/' /etc/rpm-ostreed.conf && \ systemctl enable rpm-ostreed-automatic.timer && \ systemctl enable flatpak-system-update.timer && \ - sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ublue-os-vanilla-first-setup.repo && \ rm -rf \ /tmp/* \ /var/* && \ diff --git a/etc/justfile b/etc/justfile index a0bcc3f..4540b01 100644 --- a/etc/justfile +++ b/etc/justfile @@ -22,22 +22,16 @@ distrobox-opensuse: distrobox-ubuntu: echo 'Creating Ubuntu distrobox ...' distrobox create --image quay.io/toolbx-images/ubuntu-toolbox:22.04 -n ubuntu -Y - + setup-flatpaks: - echo 'Setting up your flatpaks...' - flatpak install -y --user \\ - com.discordapp.Discord \\ - com.mastermindzh.tidal-hifi \\ - com.microsoft.Edge \\ - com.plexamp.Plexamp \\ - com.slack.Slack \\ - com.todoist.Todoist \\ - com.visualstudio.code \\ - im.riot.Riot \\ - no.mifi.losslesscut \\ - org.standardnotes.standardnotes \\ - tv.plex.PlexDesktop \\ - us.zoom.Zoom + echo 'Installing flatpaks from the ublue recipe ...' + flatpaks=$(dasel -f /etc/ublue-recipe.yml -r yaml -w json -s 'flatpaks') + flatpaks_count=$(echo $flatpaks | dasel -r json -s 'len()') + for i in $(seq 0 $(($flatpaks_count-1))); do + pkg=$(echo $flatpaks | dasel -r json "[${i}]" | tr -d '"') + echo "# Installing ${pkg}" + flatpak install --user --noninteractive flathub $pkg + done setup-pwa: echo 'Giving browser permission to create PWAs (Progressive Web Apps)' diff --git a/recipe.yml b/recipe.yml new file mode 100644 index 0000000..b8296ab --- /dev/null +++ b/recipe.yml @@ -0,0 +1,13 @@ +rpms: + - distrobox + - gnome-tweaks + - just +flatpaks: + - org.mozilla.firefox + - org.mozilla.Thunderbird + - com.mattjakeman.ExtensionManager + - org.libreoffice.LibreOffice + - org.gnome.DejaDup + - org.gustavoperedo.FontDownloader + - com.github.tchx84.Flatseal + - io.github.celluloid_player.Celluloid diff --git a/ublue-firstboot b/ublue-firstboot index b4f3b15..393e801 100755 --- a/ublue-firstboot +++ b/ublue-firstboot @@ -55,77 +55,24 @@ if [ "$?" != 0 ] ; then fi echo "25" -echo "# Installing Firefox" -/usr/bin/flatpak install --user --noninteractive flathub org.mozilla.firefox -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing Firefox Failed" - exit 1 -fi -echo "30" +echo "# Installing flatpaks from recipe" +flatpaks=$(yq '.flatpaks[]' < /etc/ublue-recipe.yml) +flatpaks_count=$(yq '.flatpaks[]' < /etc/ublue-recipe.yml | wc -l) +i=0 +for pkg in $flatpaks; do + echo "# Installing ${pkg}" + /usr/bin/flatpak install --user --noninteractive flathub $pkg + if [ "$?" != 0 ] ; then + zenity --error \ + --text="Installing ${pkg} Failed" + exit 1 + fi + i=$((i+1)) + # Automatically calculates evenly spaced progess using bc, cuts everything after decimal point. + echo "${i}/${flatpaks_count} * (95-30) + 30" | bc -l | cut -d "." -f1 +done -echo "# Installing Thunderbird" -/usr/bin/flatpak install --user --noninteractive flathub org.mozilla.Thunderbird -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing Thunderbird Failed" - exit 1 -fi -echo "40" -echo "# Installing Extension Manager" -/usr/bin/flatpak install --user --noninteractive flathub com.mattjakeman.ExtensionManager -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing Extension Manager Failed" - exit 1 -fi -echo "50" - -echo "# Installing LibreOffice" -/usr/bin/flatpak install --user --noninteractive flathub org.libreoffice.LibreOffice -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing LibreOffice Failed" - exit 1 -fi -echo "70" - -echo "# Installing DejaDup Backup" -/usr/bin/flatpak install --user --noninteractive flathub org.gnome.DejaDup -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing DejaDup Failed" - exit 1 -fi -echo "80" - -echo "# Installing Font Downloader" -/usr/bin/flatpak install --user --noninteractive flathub org.gustavoperedo.FontDownloader -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing FontDownloader Failed" - exit 1 -fi -echo "85" - -echo "# Installing Flatseal" -/usr/bin/flatpak install --user --noninteractive flathub com.github.tchx84.Flatseal -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing Flatseal Failed" - exit 1 -fi -echo "90" - -echo "# Installing Celluloid Media Player" -/usr/bin/flatpak install --user --noninteractive flathub io.github.celluloid_player.Celluloid -if [ "$?" != 0 ] ; then - zenity --error \ - --text="Installing Celluloid Failed" - exit 1 -fi -echo "95" echo "Enabling Flatpak auto update" /usr/bin/systemctl --user enable --now flatpak-user-update.timer