63 lines
1.2 KiB
Nix
63 lines
1.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib) mkOption;
|
|
inherit (builtins) typeOf listToAttrs;
|
|
in {
|
|
options.flatpaks = mkOption {
|
|
default = [];
|
|
type = with lib.types;
|
|
listOf (either str (submodule {
|
|
options = {
|
|
name = mkOption {
|
|
type = str;
|
|
};
|
|
overrides = mkOption {
|
|
type = attrsOf (attrsOf (either str (listOf str)));
|
|
default = {};
|
|
};
|
|
};
|
|
}));
|
|
};
|
|
config.services.flatpak = let
|
|
userOverrides = listToAttrs (
|
|
map (
|
|
fp:
|
|
if (typeOf fp == "string")
|
|
then {
|
|
name = fp;
|
|
value = {};
|
|
}
|
|
else {
|
|
inherit (fp) name;
|
|
value = fp.overrides;
|
|
}
|
|
)
|
|
config.flatpaks
|
|
);
|
|
in {
|
|
enable = true;
|
|
uninstallUnmanaged = true;
|
|
update.auto.enable = true;
|
|
packages =
|
|
map (
|
|
fp:
|
|
if (typeOf fp == "set")
|
|
then fp.name
|
|
else fp
|
|
)
|
|
config.flatpaks;
|
|
overrides =
|
|
userOverrides
|
|
// {
|
|
global = {
|
|
Context.sockets = ["wayland"];
|
|
Environment = {
|
|
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|