From ffaa813a92dc1f84d7044c936ddebbf3c73bc400 Mon Sep 17 00:00:00 2001 From: ska Date: Thu, 25 Dec 2025 22:25:48 +0000 Subject: [PATCH] Add flatpak.nix --- flatpak.nix | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 flatpak.nix diff --git a/flatpak.nix b/flatpak.nix new file mode 100644 index 0000000..c906c28 --- /dev/null +++ b/flatpak.nix @@ -0,0 +1,38 @@ +{ config, pkgs, ... }: +let + # We point directly to 'gnugrep' instead of 'grep' + grep = pkgs.gnugrep; + # 1. Declare the Flatpaks you *want* on your system + desiredFlatpaks = []; +in { + system.userActivationScripts.flatpakManagement = { + text = '' + # 2. Ensure the Flathub repo is added + ${pkgs.flatpak}/bin/flatpak remote-add --if-not-exists flathub \ + https://flathub.org/repo/flathub.flatpakrepo + + # 3. Get currently installed Flatpaks + installedFlatpaks=$(${pkgs.flatpak}/bin/flatpak list --app --columns=application) + + # 4. 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 -y --noninteractive $installed + fi + done + + # 5. 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 -y flathub $app + done + + # 6. Remove unused Flatpaks + ${pkgs.flatpak}/bin/flatpak uninstall --unused -y + + # 7. Update all installed Flatpaks + ${pkgs.flatpak}/bin/flatpak update -y + ''; + }; +} \ No newline at end of file