{ lib, writeTextFile }: /* Create an XDG MIME Association listing. This should also take care of generating desktop-specific mimeapps.list if `desktopName` is given. The given desktop name is already assumed to be in suitable casing which is typically in lowercase ASCII. */ { # An optional string containing the name of the desktop to be associated # with. desktopName ? "", # Applications to be put in `Added Associations`. This is not set when the # database is desktop-specific (when the `desktopName` is non-empty.) addedAssociations ? { }, # Associations to be put in `Removed Associations` in the file. Similar to # `addedAssociations`, this will not be added when it is desktop-specific. removedAssociations ? { }, # Set of applications to be opened associated with the MIME type. defaultApplications ? { }, }: writeTextFile { name = "xdg-mime-associations${ lib.optionalString (desktopName != "") "-${desktopName}" }"; text = # Non-desktop-specific mimeapps.list are only allowed to specify # default applications. lib.generators.toINI { } ({ "Default Applications" = defaultApplications; } // (lib.optionalAttrs (desktopName == "") { "Added Associations" = addedAssociations; "Removed Associations" = removedAssociations; })); destination = "/share/applications/${ lib.optionalString (desktopName != "") "${desktopName}-" }mimeapps.list"; }