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