mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-25 03:17:13 +00:00
65fe2546b7
I did double-check that the fixed version does what we would want. In either case, the katamari script is mostly of historical value, and there's nothing to change in pkgs.
35 lines
2.3 KiB
Markdown
35 lines
2.3 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.
|
|
|
|
## Katamari Tarballs
|
|
|
|
X.org upstream releases used to include [katamari](https://en.wiktionary.org/wiki/%E3%81%8B%E3%81%9F%E3%81%BE%E3%82%8A) releases, which included a holistic recommended version for each tarball, up until 7.7. To create a list of tarballs in a katamari release:
|
|
|
|
```sh
|
|
export release="X11R7.7"
|
|
export url="mirror://xorg/$release/src/everything/"
|
|
cat $(PRINT_PATH=1 nix-prefetch-url $url | tail -n 1) \
|
|
| perl -e 'while (<>) { if (/(href|HREF)="([^"]*.bz2)"/) { print "$ENV{'url'}$2\n"; }; }' \
|
|
| sort > "tarballs-$release.list"
|
|
```
|
|
|
|
## Individual Tarballs
|
|
|
|
The upstream release process for [X11R7.8](https://x.org/wiki/Releases/7.8/) does not include a planned katamari. Instead, each component of X.org is released as its own tarball. We maintain `pkgs/servers/x11/xorg/tarballs.list` as a list of tarballs for each individual package. This list includes X.org core libraries and protocol descriptions, extra newer X11 interface libraries, like `xorg.libxcb`, and classic utilities which are largely unused but still available if needed, like `xorg.imake`.
|
|
|
|
## Generating Nix Expressions
|
|
|
|
The generator is invoked as follows:
|
|
|
|
```sh
|
|
cd pkgs/servers/x11/xorg
|
|
<tarballs.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.)
|
|
|
|
## Overriding the Generator
|
|
|
|
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`.
|