nixpkgs/nixos/modules/config
Bryan Gardiner 2400191caf
nixos/xdg/mime: disable fdatasync when building the XDG MIME database
Back in 2013, update-mime-database started using fdatasync() to write out
its changes after processing each file in /share/mime, with the reasoning
that a corrupted database from an interruption midway would be
problematic for applications[1].  Unfortunately, this caused a
significant regression in the time required to run update-mime-database:
commonly from under a second to half a minute or more.

This delay affects the time required to build system-path on NixOS, when
xdg.mime.enable is true (the default).  For example, on one of my systems
system-path builds in ~48 seconds, 45 of which are update-mime-database.
This makes rapidly building new system configurations not fun.

This commit disables the calls to fdatasync().  update-mime-database
checks an environment variable, PKGSYSTEM_ENABLE_FSYNC, to determine
whether it should sync, and we can set this to false.  system-path
already only has whatever filesystem commit guarantees that the Nix
builder provides.  Furthermore, there is no risk of a failed MIME
database update messing up existing packages, because this is Nix.

(This issue was also reported at and discussed by Debian, Red Hat, and
Gentoo at least.)

[1] https://bugs.freedesktop.org/show_bug.cgi?id=70366
2019-05-25 21:00:25 -07:00
..
fonts treewide: Remove usage of isNull 2019-04-29 14:05:50 +02:00
gtk nixos gtk.iconCache.enable: default from xserver.enable 2018-11-17 11:18:10 +01:00
krb5 nixos: correct improper uses of mkEnableOption, clarify service descriptions 2018-10-05 13:14:45 +07:00
xdg nixos/xdg/mime: disable fdatasync when building the XDG MIME database 2019-05-25 21:00:25 -07:00
appstream.nix nixos: add AppStream module 2018-12-04 20:26:25 +00:00
debug-info.nix Set $NIX_DEBUG_INFO_DIRS when environment.enableDebugInfo is enabled 2017-10-10 12:04:57 +02:00
gnu.nix treewide: isArm -> isAarch32 2018-04-25 15:28:55 -04:00
i18n.nix Merge pull request #36424 from jfrankenau/i18n-extra-locale 2018-11-29 16:22:34 +01:00
iproute2.nix alternative for iproute module (#41801) 2018-09-01 20:28:23 +02:00
ldap.nix nixos/ldap: set proper User= and Group= for nslcd service 2019-03-28 13:08:47 +01:00
malloc.nix FIx some malformed XML in option descriptions 2019-05-13 09:15:17 +02:00
networking.nix Revert "resolvconf.conf: Remove forced NSCD service restart" 2018-11-21 15:26:37 +01:00
no-x-libs.nix environment.noXlibs: disable gnome3 support for pinentry (#59051) 2019-04-06 10:06:55 +00:00
nsswitch.nix nixos/nsswitch: add option to configure nssHosts 2019-02-22 23:00:24 +01:00
power-management.nix [bot] nixos/*: remove unused arguments in lambdas 2018-07-20 20:56:59 +00:00
pulseaudio.nix nixos/pulseaudio: disable flat-volumes by default 2019-01-27 19:51:26 +00:00
shells-environment.nix nixos/shells: enable to nullify already defined aliases 2018-10-14 00:14:49 +09:00
swap.nix change swap.randomEncryption config option to "coercedTo" for backwards compatibility 2017-07-26 20:57:10 +03:00
sysctl.nix treewide: Remove usage of isNull 2019-04-29 14:05:50 +02:00
system-environment.nix types: loeOf -> listOf 2016-11-05 21:46:42 +01:00
system-path.nix nixos/system-path.nix: add 3 to every priority 2019-02-18 21:16:30 -05:00
terminfo.nix terminfo: symlink terminfo to /etc for ncurses 2017-06-30 11:17:11 +02:00
timezone.nix nixos/config/timezone: Disallow spaces 2017-10-09 20:52:25 +02:00
unix-odbc-drivers.nix [bot] nixos/*: remove unused arguments in lambdas 2018-07-20 20:56:59 +00:00
update-users-groups.pl update-users-groups.pl: Keep track of deallocated UIDs/GIDs 2017-03-29 18:13:18 +02:00
users-groups.nix lib.makePerlPath -> perlPackages.makePerlPath 2018-12-15 03:50:31 +00:00
vpnc.nix [bot] nixos/*: remove unused arguments in lambdas 2018-07-20 20:56:59 +00:00
zram.nix zram: revert "change default algorithm to zstd" (#56856) 2019-03-07 02:11:20 +02:00