Update flatpak.nix

This commit is contained in:
ska
2025-12-25 23:11:32 +00:00
parent d4e1884051
commit df5533bbaf

View File

@@ -1,39 +1,56 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
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 let
desiredFlatpaks = [
"org.mozilla.firefox"
"org.mozilla.thunderbird"
];
flatpakScript = pkgs.writeScript "nix-flatpak-management" ''
#!${pkgs.runtimeShell} -e
${pkgs.flatpak}/bin/flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Get currently installed Flatpaks
installedFlatpaks=$(${pkgs.flatpak}/bin/flatpak list --app --columns=application) installedFlatpaks=$(${pkgs.flatpak}/bin/flatpak list --app --columns=application)
# We allow users to install flatpaks on their own, so this part is not active. # Users can decide what flatpaks they want to install so this is disabled
# 4. Remove any Flatpaks that are NOT in the desired list # Remove Flatpaks not in the desired list
# for installed in $installedFlatpaks; do # for installed in $installedFlatpaks; do
# if ! echo ${toString desiredFlatpaks} | ${grep}/bin/grep -q $installed; then # if ! echo ${lib.concatStringsSep " " desiredFlatpaks} | grep -q "$installed"; then
# echo "Removing $installed because it's not in the desiredFlatpaks list." # echo "Removing $installed because it's not in the desiredFlatpaks list."
# ${pkgs.flatpak}/bin/flatpak uninstall -y --noninteractive $installed # ${pkgs.flatpak}/bin/flatpak uninstall -y --noninteractive "$installed"
# fi # fi
# done # done
# 5. Install or re-install the Flatpaks you DO want # Install or re-install desired Flatpaks
for app in ${toString desiredFlatpaks}; do for app in ${lib.concatStringsSep " " desiredFlatpaks}; do
echo "Ensuring $app is installed." echo "Ensuring $app is installed."
${pkgs.flatpak}/bin/flatpak install -y flathub $app ${pkgs.flatpak}/bin/flatpak install -y --noninteractive flathub "$app"
done done
# 6. Remove unused Flatpaks # Remove unused Flatpaks
${pkgs.flatpak}/bin/flatpak uninstall --unused -y ${pkgs.flatpak}/bin/flatpak uninstall --unused -y --noninteractive
# 7. Update all installed Flatpaks # Update all installed Flatpaks
${pkgs.flatpak}/bin/flatpak update -y ${pkgs.flatpak}/bin/flatpak update -y --noninteractive
''; '';
in
{
systemd.services.nix-flatpak-management = {
description = "Manage Flatpak installations";
serviceConfig = {
Type = "oneshot";
RemainAfterExit = "yes";
ExecStart = "${flatpakScript}";
};
wantedBy = ["multi-user.target"];
};
systemd.timers.nix-flatpak-management = {
description = "Run flatpak management periodically";
timerConfig = {
OnCalendar = "daily";
Persistent = "true";
};
wantedBy = ["timers.target"];
}; };
} }