[Nix-dev] Overriding xorgserver in nixpkgs

T White white.tw.tw at gmail.com
Sun Jan 10 23:28:19 CET 2016


Hi mailing list,
I first ran nixos about five years ago and back then I remember I was part
of the mailing list; asking lots of questions and I remember that Sander,
Mark and Eelco were very helpful. :) Hi guys!
Anyway, having not had suitable enough hardware at the time I ventured off
and explored the wonderful world of Fedora; learned a good amount of
sysadmin and finally explored centos because it appeared to offer most of
what Fedora did but with a focus on long term support.
After realising that centos had dropped support for 32 bit in userspace, I
decided to try and get back into nixos (I saw you guys had steam working!)

I have noticed some really positive changes since I was last here : the
switch from svn to git, the move to github and the creation of the nixos
foundation. It certainly looks like the project is heading in the right
direction and it is a credit to the work you guys are doing. Keep it up!

So my intentions are now to try and keep my desktop machine at least in
line with stable releases going forward, whilst also experimenting by
building features which have not yet been implemented or merged into
master.  I am still learning the nix language and I have just recently
started learning how to use git to interact with github. So my
understanding of nix is not good yet and I was hoping here would be a good
place to try to find a solution or two to things which don't work for me
(which are likely due to my current level of understanding. Please
enlighten me and do be gentle.)

First off, I have been pulling from unstable master until about a week ago
and it has been building consistently without issue. I read that gcc5 is a
milestone for the next release https://github.com/NixOS/nixpkgs/issues/8729
and pulled and merged wkennington's tree into a new branch to have a look
and see if it builds. As a result, with some patching it builds and I am in
the process of testing it out. So far so good. I intend to re-factor the
patches (a lot of them were very rushed,) and offer them back
to wkennington to see if he will take any of them.

Before I do so however, I have one outstanding issue specific to the
ati-drivers package which I would like to resolve. The issue is that
currently, the latest release from AMD for their fglrx display driver does
not yet support xserver 1.18. In wkennington's tree xserver 1.18 is the
default. By manually changing the src, sha256 and name
in /nixpkgs/pkgs/servers/x11/xorg/default.nix for the xorgserver package to
the same as in unstable (1.17) I was able to get the driver working.
Without modifying any other packages.
Because /nixpkgs/pkgs/servers/x11/xorg/default.nix is a generated file I
should not be editing that file and I should be doing an overrride instead.
Accept I have attempted multiple times now to overrride the
pkgs.xorg.xorgserver attributes and I just can't seem to get it right.
My current non-working attempt involved patching replacements.nix in the
xorg folder to contain :

{
  xorgserver = {}:
  makeOverridable stdenv.mkDerivation {
     name = "xorg-server-1.17.4";
     builder = ./builder.sh;
     src = fetchurl {
      url = mirror://xorg/individual/xserver/xorg-server-1.17.4.tar.bz2;
      sha256 = "0mv4ilpqi5hpg182mzqn766frhi6rw48aba3xfbaj4m82v0lajqc";
    };
    buildInputs = [pkgconfig dri2proto dri3proto renderproto libdrm openssl
libX11 libXau libXaw libxcb xcbutil xcbutilwm xcbutilimage xcbutilkeysyms
xcbutilrenderutil libXdmcp libXfixes libxkbfile libXmu libXpm libXrender
libXres libXt ];
  };

and setting :

  nixpkgs.config.packageOverride = pkgs:
    { xorg.xorgserver = pkgs.xorgReplacements.xorgserver;
    };

in configuration.nix

It builds but does not replace xorg.xserver with version 1.17.

So could anyone please give me some pointers on how I should do this please?

What I am looking at is the possibility of forking the current ati-drivers
with a new updated package because of backwards compatibility. AMD have
dropped support for some cards but NixOS can support the old driver (which
supports the old cards) should xorgserver 1.17, gcc49 and kernel 4.1 be
installed.
In order to provide the backwards compatibility, the xserver version will
need to be downgraded to 1.17 permanently if ati_unfree is true in
configuration.nix, for the old version of fglrx but also in the interim for
the latest version of fglrx.
If AMD provide xserver 1.18 support in their next release only the old
version will require an overrride.

So; is making the override in configuration.nix the right solution or could
anyone please point me towards a better way?

Sorry that this is a long post and thanks for reading it and in advance for
your help.

Kind Regards,
Tony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20160110/e0cbf006/attachment.html 


More information about the nix-dev mailing list