It is a system wide configuration, yes, and what is disallowed by default is *reducing* niceness (ie: increasing priority, and that, to *any* level). It is IMO a stupid restriction, especially since it prevents a thread from getting back to its default niceness once it has increased it (which is always allowed).
This is the reason for the `rlimit` check that is included here, used to determine the usable operating niceness range, so that we don't get stuck in a nice level we can't get out of. We also explicitly request the hard limit, so that the system can be configured with the existing default as a soft limit, as some sort of safety net against broken software.
I think we should have support for it nonetheless, because it's the only reliable way to implement thread priorities (rtkit is a dead-end), and they have been reported to make a difference, greatly reducing stuttering when shaders are being compiled for instance.