42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
|
# X.org {#sec-xorg}
|
|||
|
|
|||
|
The Nix expressions for the X.org packages reside in
|
|||
|
`pkgs/servers/x11/xorg/default.nix`. This file is automatically generated from
|
|||
|
lists of tarballs in an X.org release. As such it should not be modified
|
|||
|
directly; rather, you should modify the lists, the generator script or the
|
|||
|
file `pkgs/servers/x11/xorg/overrides.nix`, in which you can override or add
|
|||
|
to the derivations produced by the generator.
|
|||
|
|
|||
|
The generator is invoked as follows:
|
|||
|
|
|||
|
```sh
|
|||
|
cd pkgs/servers/x11/xorg
|
|||
|
cat tarballs-7.4.list extra.list old.list | perl ./generate-expr-from-tarballs.pl
|
|||
|
```
|
|||
|
|
|||
|
For each of the tarballs in the `.list` files, the script downloads it,
|
|||
|
unpacks it, and searches its `configure.ac` and `*.pc.in` files for
|
|||
|
dependencies. This information is used to generate `default.nix`. The
|
|||
|
generator caches downloaded tarballs between runs. Pay close attention to the
|
|||
|
`NOT FOUND: $NAME` messages at the end of the run, since they may indicate
|
|||
|
missing dependencies. (Some might be optional dependencies, however.)
|
|||
|
|
|||
|
A file like `tarballs-7.4.list` contains all tarballs in a X.org release. It
|
|||
|
can be generated like this:
|
|||
|
|
|||
|
```sh
|
|||
|
export i="mirror://xorg/X11R7.4/src/everything/"
|
|||
|
cat $(PRINT_PATH=1 nix-prefetch-url $i | tail -n 1) \
|
|||
|
| perl -e 'while (<>) { if (/(href|HREF)="([^"]*.bz2)"/) { print "$ENV{'i'}$2\n"; }; }' \
|
|||
|
| sort > tarballs-7.4.list
|
|||
|
```
|
|||
|
|
|||
|
`extra.list` contains libraries that aren’t part of X.org proper, but are
|
|||
|
closely related to it, such as `libxcb`. `old.list` contains some packages
|
|||
|
that were removed from X.org, but are still needed by some people or by other
|
|||
|
packages (such as `imake`).
|
|||
|
|
|||
|
If the expression for a package requires derivation attributes that the
|
|||
|
generator cannot figure out automatically (say, `patches` or a `postInstall`
|
|||
|
hook), you should modify `pkgs/servers/x11/xorg/overrides.nix`.
|