{ lib, pkgs, self }: { # The gnome-session config files uses one from GLib. See the following link # at for details about the # keyfile formatting and possibly the Desktop Entry specification at # . glibKeyfile = {}: { type = with lib.types; let valueType = oneOf [ bool float int str (listOf valueType) ] // { description = "GLib keyfile atom (bool, int, float, string, or a list of the previous atoms)"; }; in attrsOf (attrsOf valueType); generate = name: value: pkgs.callPackage ({ lib, writeText }: writeText name (lib.generators.toDconfINI value)); }; }