add flatpak auto installation/removal
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
'';
|
||||
})
|
||||
]);
|
||||
|
Reference in New Issue
Block a user