1

add flatpak auto installation/removal

This commit is contained in:
2022-08-08 01:55:10 +02:00
parent 7fc0be1ea5
commit 41c7beef64
2 changed files with 79 additions and 20 deletions

View File

@ -47,10 +47,12 @@ rec {
fontFix = true; fontFix = true;
iconFix = true; iconFix = true;
autoInstall = true;
autoUpdate = true; autoUpdate = true;
autoPrune = true;
packages = [ "discord" ]; discord = false;
spotify = true;
flatseal = true;
}; };
# TODO: Email # TODO: Email

View File

@ -26,23 +26,43 @@ in {
description = "Link icons to ~/.local/share/icons so flatpak apps can find them"; description = "Link icons to ~/.local/share/icons so flatpak apps can find them";
}; };
packages = mkOption {
type = types.listOf types.str;
default = [ ];
description = "List of enabled flatpaks";
};
autoInstall = mkOption {
type = types.bool;
default = false;
description = "Install enabled flatpaks on nixos-rebuild";
};
autoUpdate = mkOption { autoUpdate = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
description = "Update flatpak apps on nixos-rebuild"; description = "Update flatpak apps on nixos-rebuild";
}; };
autoPrune = mkOption {
type = types.bool;
default = false;
description = "Remove unused packages on nixos-rebuild";
};
discord = mkOption {
type = types.bool;
default = false;
description = "Enable Discord";
};
spotify = mkOption {
type = types.bool;
default = false;
description = "Enable Spotify";
};
flatseal = mkOption {
type = types.bool;
default = false;
description = "Enable Flatseal";
};
# NOTE: Disabled as these won't be removed automatically when disabled
# Will see if it works well enough without this flexibility
# extraPackages = mkOption {
# type = types.listOf types.str;
# default = [ ];
# description = "List of additionally enabled flatpaks";
# };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -73,15 +93,52 @@ in {
''; '';
}) })
(mkIf cfg.autoInstall { {
installFlatpak = lib.hm.dag.entryAfter [ "writeBoundary" ] '' installFlatpak =
flatpak install -y ${builtins.concatStringsSep " " cfg.packages} let
''; # For some reason (mkIf ...) evaluates to a set { _type = "if"; condition = ... } so nothing can
}) # be merged. I don't understand why the set isn't evaluated, it worked previously
to_install = (builtins.concatLists [
# (mkIf cfg.discord [ "com.discordapp.Discord" ])
# (mkIf cfg.spotify [ "com.spotify.Client" ])
# (mkIf cfg.flatseal [ "com.github.tchx84.Flatseal" ])
(if cfg.discord then [ "com.discordapp.Discord" ] else [ ])
(if cfg.spotify then [ "com.spotify.Client" ] else [ ])
(if cfg.flatseal then [ "com.github.tchx84.Flatseal" ] else [ ])
# cfg.extraPackages
]);
to_install_str = (builtins.concatStringsSep " " to_install);
in
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
sudo flatpak install -y ${to_install_str}
'';
# NOTE: This only removes named flatpaks, nothing from extraPackages
removeFlatpak =
let
to_remove = (builtins.concatLists [
(if ! cfg.discord then [ "com.discordapp.Discord" ] else [ ])
(if ! cfg.spotify then [ "com.spotify.Client" ] else [ ])
(if ! cfg.flatseal then [ "com.github.tchx84.Flatseal" ] else [ ])
]);
to_remove_str = (builtins.concatStringsSep " " to_remove);
in
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
sudo flatpak uninstall -y ${to_remove_str}
'';
}
(mkIf cfg.autoUpdate { (mkIf cfg.autoUpdate {
updateFlatpak = lib.hm.dag.entryAfter [ "writeBoundary" ] '' updateFlatpak = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
flatpak update -y sudo flatpak update -y
'';
})
(mkIf cfg.autoPrune {
pruneFlatpak = lib.hm.dag.entryAfter [ "writeBoundary" "removeFlatpak" ] ''
sudo flatpak uninstall --unused -y
''; '';
}) })
]); ]);