nixos-config/modules/nixos/xdg/mime-desktop-specific.nix

38 lines
1.0 KiB
Nix
Raw Normal View History

{ config, lib, options, ... }:
let
cfg = config.xdg.mime;
mkMimeSource = name: value:
2025-01-29 04:48:19 +00:00
lib.nameValuePair "xdg/${name}-mimeapps.list"
(lib.mkIf (value.defaultApplications != { }) {
text = lib.generators.toINI { } {
"Default Applications" = value.defaultApplications;
};
});
xdgMimeAssociations = { name, lib, ... }: {
options.defaultApplications = options.xdg.mime.defaultApplications;
};
2025-01-29 04:48:19 +00:00
in {
options.xdg.mime.desktops = lib.mkOption {
type = with lib.types; attrsOf (submodule xdgMimeAssociations);
description = ''
Additional desktop-specific associations.
::: {.note}
This can only specify default applications for a specific MIME type and
cannot be used to remove or add associations.
:::
'';
default = { };
example = {
2025-01-29 04:48:19 +00:00
gnome.defaultApplications = { "application/pdf" = "firefox.desktop"; };
};
};
config = lib.mkIf (cfg.desktops != { }) {
2025-01-29 04:48:19 +00:00
environment.etc = lib.mapAttrs' mkMimeSource cfg.desktops;
};
}