summary refs log tree commit diff
path: root/doc/outline.txt
blob: 816cdbdc3ed7eae22f5267b56ef20671653c2c44 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
- The standard environment

  (Some of this can be moved from the Nix manual)

  - Special attributes

  - Generic builder

  - Helper functions

  - GCC / ld wrapper (+ env vars)

  - Phases (+ how to add phases) and hooks

  - Override functions for stdenv

    - Overriding GCC

    - Overriding the setup script

    - Predefined override functions in all-packages.nix: static binary
      stdenv, dietlibc stdenv

  - Stdenv bootstrap; how to update the Linux bootstrap binaries

  - Specific platform notes (Linux, Native, Cygwin, Mingw)


- Support for specific languages

  - Perl

    - Generic Perl builder

  - Python

    - Wrapper generation

  - Haskell

    - TODO

  - Java

    - TODO; Java needs lots of improvement

  - TeX/LaTeX

    - Special support for building TeX documents
  

- Special kinds of applications

  - OpenGL apps

  - Binary-only apps

  - Linux kernel modules

  - Mozilla plugins/extensions

  - X apps

  - KDE apps

  - GConf-based apps

  - Programs that need wrappers

    - makeWrapper etc.

  - Initial ramdisks


- Library functions

  - i.e. in lib/default.nix


- Specific package notes

  - Linux kernel; how to update; feature tests

  - X.org; how to update

  - Gnome; how to update

  - GCC?

  - GHC?

  - ...


- Meta attributes

  - License attr; possible values


- Virtual machine support (for the build farm)

  - vmtools

  - KVM notes

  - Performing a build in a VM

    - In the host FS

    - In a disk image

  - RPM builds

    - RPM image creation

  - Deb builds

    - Deb image creation

  - Debugging VM builds
  

- Guidelines for Nixpkgs contributions

  - File naming conventions

    - Versioning of packages

  - Tree organisation

  - Variable naming

  - Layout / indentations style

  - Output FS hierarchy (e.g. $out/share/man instead of $out/man)

  
- Misc

  - Building outside of the Nixpkgs tree

  - Config options

  - Downloading stuff

    - fetchurl

      - mirror:// scheme

    - fetchsvn

    - fetchcvs

    - fetchdarcs


- Appendix: Nixpkgs config options