Skip to content
This repository has been archived by the owner on Jan 14, 2024. It is now read-only.

feat: ease customization by reading flatpaks and rpms to install from a recipe.yml. #79

Merged
merged 13 commits into from
Feb 28, 2023
Merged
15 changes: 11 additions & 4 deletions Containerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,23 @@ 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; \
marcoceppi marked this conversation as resolved.
Show resolved Hide resolved
done && \
echo "---" && \

sed -i 's/#AutomaticUpdatePolicy.*/AutomaticUpdatePolicy=stage/' /etc/rpm-ostreed.conf && \
systemctl enable rpm-ostreed-automatic.timer && \
systemctl enable flatpak-system-update.timer && \
Expand Down
24 changes: 9 additions & 15 deletions etc/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -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)'
Expand Down
13 changes: 13 additions & 0 deletions recipe.yml
Original file line number Diff line number Diff line change
@@ -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
85 changes: 16 additions & 69 deletions ublue-firstboot
Original file line number Diff line number Diff line change
Expand Up @@ -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.
xynydev marked this conversation as resolved.
Show resolved Hide resolved
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
Expand Down