Added nixos configs
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
p = import ./conf/packages.conf { inherit pkgs; };
|
||||
remote = p.flatpakRemote;
|
||||
apps = p.flatpakApps;
|
||||
q = lib.escapeShellArg;
|
||||
appArgs = lib.concatStringsSep " " (map q apps);
|
||||
moduleName = "hm-flatpak";
|
||||
in
|
||||
{
|
||||
services.flatpak.enable = true;
|
||||
|
||||
# Make network-online.target meaningful on NetworkManager systems
|
||||
systemd.services.NetworkManager-wait-online.enable = true;
|
||||
|
||||
systemd.services.flatpak-sync = {
|
||||
description = "Sync Flatpak remote and apps";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
wants = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
|
||||
# re-run when system changes (useful when app list changes)
|
||||
#restartTriggers = [ config.system.build.toplevel ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
TimeoutStartSec = 300;
|
||||
};
|
||||
|
||||
script = ''
|
||||
set -euo pipefail
|
||||
FLATPAK=${pkgs.flatpak}/bin/flatpak
|
||||
|
||||
# wait for DNS (prevents your exact error)
|
||||
for i in $(seq 1 30); do
|
||||
if ${pkgs.getent}/bin/getent hosts dl.flathub.org >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
"$FLATPAK" remote-add --system --if-not-exists ${q remote.name} ${q remote.url} || true
|
||||
|
||||
installed="$("$FLATPAK" list --system --app --columns=application 2>/dev/null || true)"
|
||||
for app in ${appArgs}; do
|
||||
if echo "$installed" | grep -qx "$app"; then
|
||||
echo "flatpak: already installed: $app"
|
||||
else
|
||||
echo "flatpak: installing: $app"
|
||||
"$FLATPAK" install --system -y ${q remote.name} "$app"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
};
|
||||
home.file.".nixlog/loaded.${moduleName}-module-loaded".text = "loaded\n";
|
||||
}
|
||||
Reference in New Issue
Block a user