Skip to content

Commit

Permalink
installer: forcefully delete remotes when managing state.
Browse files Browse the repository at this point in the history
Remove remotes even if refs are installed. This
can happen in case of manual installation or remotes
and packages. If the user sets
uninstallUnmanagedState = true forcefully remove
any eventuall dangling dependency.
  • Loading branch information
gmodena committed Oct 20, 2024
1 parent 8d1193a commit 8bc9666
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions modules/installer.nix
Original file line number Diff line number Diff line change
Expand Up @@ -173,15 +173,16 @@ let
'';
flatpakAddRemote = installation: remotes: map (flatpakAddRemotesCmd installation) remotes;

flatpakDeleteRemotesCmd = installation: {}: ''
flatpakDeleteRemotesCmd = installation: uninstallUnmanagedState: {}: ''
# Delete all remotes that are present in the old state but not the new one
# $OLD_STATE and $NEW_STATE are globals, declared in the output of pkgs.writeShellScript.
# If uninstallUnmanagedState is true, then the remotes will be deleted forcefully.
${pkgs.jq}/bin/jq -r -n \
--argjson old "$OLD_STATE" \
--argjson new "$NEW_STATE" \
'(($old.remotes // []) - ($new.remotes // []))[]' \
| while read -r REMOTE_NAME; do
${pkgs.flatpak}/bin/flatpak remote-delete --${installation} $REMOTE_NAME
${pkgs.flatpak}/bin/flatpak remote-delete ${if uninstallUnmanagedState then " --force " else " " } --${installation} $REMOTE_NAME
done
'';

Expand Down Expand Up @@ -215,7 +216,7 @@ pkgs.writeShellScript "flatpak-managed-install" ''
# Uninstall remotes that have been removed from services.flatpak.packages
# since the previous activation.
${flatpakDeleteRemotesCmd installation {}}
${flatpakDeleteRemotesCmd installation uninstallUnmanagedState {}}
# Install packages
${mkFlatpakInstallCmd installation updateApplications cfg.packages}
Expand Down

0 comments on commit 8bc9666

Please sign in to comment.