doc/gnome: document GIO modules

In particular, that glib-networking is required for TLS support.

+19 -1
+19 -1
doc/languages-frameworks/gnome.section.md
··· 8 8 9 9 [GSettings](https://developer.gnome.org/gio/stable/GSettings.html) API is often used for storing settings. GSettings schemas are required, to know the type and other metadata of the stored values. GLib looks for `glib-2.0/schemas/gschemas.compiled` files inside the directories of `XDG_DATA_DIRS`. 10 10 11 - On Linux, GSettings API is implemented using [dconf](https://wiki.gnome.org/Projects/dconf) backend. You will need to add `dconf` GIO module to `GIO_EXTRA_MODULES` variable, otherwise the `memory` backend will be used and the saved settings will not be persistent. 11 + On Linux, GSettings API is implemented using [dconf](https://wiki.gnome.org/Projects/dconf) backend. You will need to add `dconf` [GIO module](#ssec-gnome-gio-modules) to `GIO_EXTRA_MODULES` variable, otherwise the `memory` backend will be used and the saved settings will not be persistent. 12 12 13 13 Last you will need the dconf database D-Bus service itself. You can enable it using `programs.dconf.enable`. 14 14 15 15 Some applications will also require `gsettings-desktop-schemas` for things like reading proxy configuration or user interface customization. This dependency is often not mentioned by upstream, you should grep for `org.gnome.desktop` and `org.gnome.system` to see if the schemas are needed. 16 + 17 + ### GIO modules {#ssec-gnome-gio-modules} 18 + 19 + GLib’s [GIO](https://developer.gnome.org/gio/stable/ch01.html) library supports several [extension points](https://developer.gnome.org/gio/stable/extending-gio.html). Notably, they allow: 20 + 21 + * implementing settings backends (already [mentioned](#ssec-gnome-settings)) 22 + * adding TLS support 23 + * proxy settings 24 + * virtual file systems 25 + 26 + The modules are typically installed to `lib/gio/modules/` directory of a package and you need to add them to `GIO_EXTRA_MODULES` if you need any of those features. 27 + 28 + In particular, we recommend: 29 + 30 + * adding `dconf.lib` for any software on Linux that reads [GSettings](#ssec-gnome-settings) (even transitivily through e.g. GTK’s file manager) 31 + * adding `glib-networking` for any software that accesses network using GIO or libsoup – glib-networking contains a module that implements TLS support and loads system-wide proxy settings 32 + 33 + To allow software to use various virtual file systems, `gvfs` package can be also added. But that is usually an optional feature so we typically use `gvfs` from the system (e.g. installed globally using NixOS module). 16 34 17 35 ### GdkPixbuf loaders {#ssec-gnome-gdk-pixbuf-loaders} 18 36