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;
iconFix = true;
autoInstall = true;
autoUpdate = true;
autoPrune = true;
packages = [ "discord" ];
discord = false;
spotify = true;
flatseal = true;
};
# TODO: Email

View File

@ -26,23 +26,43 @@ in {
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 {
type = types.bool;
default = false;
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 {
@ -73,15 +93,52 @@ in {
'';
})
(mkIf cfg.autoInstall {
installFlatpak = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
flatpak install -y ${builtins.concatStringsSep " " cfg.packages}
'';
})
{
installFlatpak =
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 {
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
'';
})
]);