Update flatpak.nix
This commit is contained in:
79
flatpak.nix
79
flatpak.nix
@@ -1,39 +1,56 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
# We point directly to 'gnugrep' instead of 'grep'
|
desiredFlatpaks = [
|
||||||
grep = pkgs.gnugrep;
|
"org.mozilla.firefox"
|
||||||
# 1. Declare the Flatpaks you *want* on your system
|
"org.mozilla.thunderbird"
|
||||||
desiredFlatpaks = [];
|
];
|
||||||
in {
|
flatpakScript = pkgs.writeScript "nix-flatpak-management" ''
|
||||||
system.userActivationScripts.flatpakManagement = {
|
#!${pkgs.runtimeShell} -e
|
||||||
text = ''
|
${pkgs.flatpak}/bin/flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
# 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
|
# 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"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user