Files
nix-flake/system/flatpak.nix
Zephrynis 7689f83e8e Scope Flatpak management to user installs
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.
2025-10-26 23:33:04 +00:00

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
'';
};
}