mirror of
https://github.com/zephrynis/nix-flake.git
synced 2026-02-18 20:21:53 +00:00
Updated Flatpak commands to use the --user flag, ensuring all operations (install, uninstall, update) affect only the current user's Flatpaks. Also updated the Zen browser Flatpak ID and improved error handling during installation.
48 lines
1.5 KiB
Nix
48 lines
1.5 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
let
|
|
grep = pkgs.gnugrep;
|
|
|
|
# Declare the Flatpaks you want on your system
|
|
desiredFlatpaks = [
|
|
"app.zen_browser.zen"
|
|
# Add more Flatpak apps here
|
|
# "com.spotify.Client"
|
|
# "com.discordapp.Discord"
|
|
];
|
|
in {
|
|
# Enable Flatpak
|
|
services.flatpak.enable = true;
|
|
|
|
system.userActivationScripts.flatpakManagement = {
|
|
text = ''
|
|
# Ensure the Flathub repo is added
|
|
${pkgs.flatpak}/bin/flatpak remote-add --user --if-not-exists flathub \
|
|
https://flathub.org/repo/flathub.flatpakrepo
|
|
|
|
# Get currently installed Flatpaks
|
|
installedFlatpaks=$(${pkgs.flatpak}/bin/flatpak list --user --app --columns=application 2>/dev/null || echo "")
|
|
|
|
# Remove any Flatpaks that are NOT in the desired list
|
|
for installed in $installedFlatpaks; do
|
|
if ! echo ${toString desiredFlatpaks} | ${grep}/bin/grep -q $installed; then
|
|
echo "Removing $installed because it's not in the desiredFlatpaks list."
|
|
${pkgs.flatpak}/bin/flatpak uninstall --user -y --noninteractive $installed
|
|
fi
|
|
done
|
|
|
|
# Install or re-install the Flatpaks you DO want
|
|
for app in ${toString desiredFlatpaks}; do
|
|
echo "Ensuring $app is installed..."
|
|
${pkgs.flatpak}/bin/flatpak install --user -y flathub $app || echo "Failed to install $app"
|
|
done
|
|
|
|
# Remove unused Flatpaks
|
|
${pkgs.flatpak}/bin/flatpak uninstall --user --unused -y
|
|
|
|
# Update all installed Flatpaks
|
|
${pkgs.flatpak}/bin/flatpak update --user -y
|
|
'';
|
|
};
|
|
}
|