61 lines
1.3 KiB
Nix
61 lines
1.3 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";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|