···22 xmlns:xlink="http://www.w3.org/1999/xlink"
33 xml:id="chap-contributing">
4455-<title>Contributing</title>
55+<title>Contributing to this documentation</title>
6677<para>The DocBook sources of the Nixpkgs manual are in the <filename
88xlink:href="https://github.com/NixOS/nixpkgs/tree/master/doc">doc</filename>
···54545555</section>
56565757+<section xml:id="sec-pkg-override">
5858+ <title><pkg>.override</title>
5959+6060+ <para>
6161+ The function <varname>override</varname> is usually available for all the
6262+ derivations in the nixpkgs expression (<varname>pkgs</varname>).
6363+ </para>
6464+ <para>
6565+ It is used to override the arguments passed to a function.
6666+ </para>
6767+ <para>
6868+ Example usages:
6969+7070+ <programlisting>pkgs.foo.override { arg1 = val1; arg2 = val2; ... }</programlisting>
7171+ <programlisting>pkgs.overridePackages (self: super: {
7272+ foo = super.foo.override { barSupport = true ; };
7373+})</programlisting>
7474+ <programlisting>mypkg = pkgs.callPackage ./mypkg.nix {
7575+ mydep = pkgs.mydep.override { ... };
7676+})</programlisting>
7777+ </para>
7878+7979+ <para>
8080+ In the first example, <varname>pkgs.foo</varname> is the result of a function call
8181+ with some default arguments, usually a derivation.
8282+ Using <varname>pkgs.foo.override</varname> will call the same function with
8383+ the given new arguments.
8484+ </para>
8585+8686+</section>
8787+8888+<section xml:id="sec-lib-makeOverridable">
8989+ <title>lib.makeOverridable</title>
9090+9191+ <para>
9292+ The function <varname>lib.makeOverridable</varname> is used make the result
9393+ of a function easily customizable. This utility only makes sense for functions
9494+ that accept an argument set and return an attribute set.
9595+ </para>
9696+9797+ <para>
9898+ Example usage:
9999+100100+ <programlisting>f = { a, b }: { result = a+b; }
101101+c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
102102+103103+ </para>
104104+105105+ <para>
106106+ The variable <varname>c</varname> is the value of the <varname>f</varname> function
107107+ applied with some default arguments. Hence the value of <varname>c.result</varname>
108108+ is <literal>3</literal>, in this example.
109109+ </para>
110110+111111+ <para>
112112+ The variable <varname>c</varname> however also has some additional functions, like
113113+ <link linkend="sec-pkg-override">c.override</link> which can be used to
114114+ override the default arguments. In this example the value of
115115+ <varname>(c.override { a = 4; }).result</varname> is 6.
116116+ </para>
117117+118118+</section>
119119+57120</chapter>
···138138139139 <varlistentry>
140140 <term><varname>license</varname></term>
141141- <listitem><para>The license for the package. One from the
142142- attribute set defined in <link
143143- xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/licenses.nix">
144144- <filename>nixpkgs/lib/licenses.nix</filename></link>. Example:
145145- <literal>stdenv.lib.licenses.gpl3</literal>. For details, see
146146- <xref linkend='sec-meta-license'/>.</para></listitem>
141141+ <listitem>
142142+ <para>
143143+ The license, or licenses, for the package. One from the attribute set
144144+ defined in <link
145145+ xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/licenses.nix">
146146+ <filename>nixpkgs/lib/licenses.nix</filename></link>. At this moment
147147+ using both a list of licenses and a single license is valid. If the
148148+ license field is in the form of a list representation, then it means
149149+ that parts of the package are licensed differently. Each license
150150+ should preferably be referenced by their attribute. The non-list
151151+ attribute value can also be a space delimited string representation of
152152+ the contained attribute shortNames or spdxIds. The following are all valid
153153+ examples:
154154+ <itemizedlist>
155155+ <listitem><para>Single license referenced by attribute (preferred)
156156+ <literal>stdenv.lib.licenses.gpl3</literal>.
157157+ </para></listitem>
158158+ <listitem><para>Single license referenced by its attribute shortName (frowned upon)
159159+ <literal>"gpl3"</literal>.
160160+ </para></listitem>
161161+ <listitem><para>Single license referenced by its attribute spdxId (frowned upon)
162162+ <literal>"GPL-3.0"</literal>.
163163+ </para></listitem>
164164+ <listitem><para>Multiple licenses referenced by attribute (preferred)
165165+ <literal>with stdenv.lib.licenses; [ asl20 free ofl ]</literal>.
166166+ </para></listitem>
167167+ <listitem><para>Multiple licenses referenced as a space delimited string of attribute shortNames (frowned upon)
168168+ <literal>"asl20 free ofl"</literal>.
169169+ </para></listitem>
170170+ </itemizedlist>
171171+ For details, see <xref linkend='sec-meta-license'/>.
172172+ </para>
173173+ </listitem>
147174 </varlistentry>
148175149176 <varlistentry>
···4040 DEFAULT boot
41414242 LABEL boot
4343- MENU LABEL NixOS ${config.system.nixosVersion} Installer
4343+ MENU LABEL NixOS ${config.system.nixosVersion}${config.isoImage.appendToMenuLabel}
4444 LINUX /boot/bzImage
4545 APPEND init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}
4646 INITRD /boot/initrd
···189189 };
190190 description = ''
191191 The splash image to use in the bootloader.
192192+ '';
193193+ };
194194+195195+ isoImage.appendToMenuLabel = mkOption {
196196+ default = " Installer";
197197+ example = " Live System";
198198+ description = ''
199199+ The string to append after the menu label for the NixOS system.
200200+ This will be directly appended (without whitespace) to the NixOS version
201201+ string, like for example if it is set to <literal>XXX</literal>:
202202+203203+ <para><literal>NixOS 99.99-pre666XXX</literal></para>
192204 '';
193205 };
194206
+2
nixos/modules/misc/ids.nix
···223223 nix-serve = 199;
224224 tvheadend = 200;
225225 uwsgi = 201;
226226+ gitit = 202;
226227227228 # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
228229···424425 #nix-serve = 199; #unused
425426 #tvheadend = 200; #unused
426427 uwsgi = 201;
428428+ gitit = 202;
427429428430 # When adding a gid, make sure it doesn't match an existing
429431 # uid. Users and groups with the same name should have equal
···2121 description = ''
2222 Whether to enable GNOME Keyring daemon, a service designed to
2323 take care of the user's security credentials,
2424- such as user names and passwordsa search engine.
2424+ such as user names and passwords.
2525 '';
2626 };
2727
+659
nixos/modules/services/misc/gitit.nix
···11+{ config, lib, pkgs, ... }:
22+33+with lib;
44+55+let
66+77+ cfg = config.services.gitit;
88+99+ homeDir = "/var/lib/gitit";
1010+1111+ gititShared = with cfg.haskellPackages; gitit + "/share/" + pkgs.stdenv.system + "-" + ghc.name + "/" + gitit.pname + "-" + gitit.version;
1212+1313+ gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self));
1414+1515+ gititSh = hsPkgs: extras: with pkgs; let
1616+ env = gititWithPkgs hsPkgs extras;
1717+ in writeScript "gitit" ''
1818+ #!${stdenv.shell}
1919+ cd $HOME
2020+ export PATH="${makeSearchPath "bin" (
2121+ [ git curl ] ++ (if cfg.pdfExport == "yes" then [texLiveFull] else [])
2222+ )}:$PATH";
2323+ export NIX_GHC="${env}/bin/ghc"
2424+ export NIX_GHCPKG="${env}/bin/ghc-pkg"
2525+ export NIX_GHC_DOCDIR="${env}/share/doc/ghc/html"
2626+ export NIX_GHC_LIBDIR=$( $NIX_GHC --print-libdir )
2727+ ${env}/bin/gitit -f ${configFile}
2828+ '';
2929+3030+ gititOptions = let
3131+3232+ yesNo = types.enum [ "yes" "no" ];
3333+3434+ in {
3535+3636+ enable = mkOption {
3737+ type = types.bool;
3838+ default = false;
3939+ description = "Enable the gitit service.";
4040+ };
4141+4242+ haskellPackages = mkOption {
4343+ default = pkgs.haskellPackages;
4444+ defaultText = "pkgs.haskellPackages";
4545+ example = literalExample "pkgs.haskell.packages.ghc784";
4646+ description = "haskellPackages used to build gitit and plugins.";
4747+ };
4848+4949+ extraPackages = mkOption {
5050+ default = self: [];
5151+ example = literalExample ''
5252+ haskellPackages: [
5353+ haskellPackages.wreq
5454+ ]
5555+ '';
5656+ description = ''
5757+ Extra packages available to ghc when running gitit. The
5858+ value must be a function which receives the attrset defined
5959+ in <varname>haskellPackages</varname> as the sole argument.
6060+ '';
6161+ };
6262+6363+ address = mkOption {
6464+ type = types.str;
6565+ default = "0.0.0.0";
6666+ description = "IP address on which the web server will listen.";
6767+ };
6868+6969+ port = mkOption {
7070+ type = types.int;
7171+ default = 5001;
7272+ description = "Port on which the web server will run.";
7373+ };
7474+7575+ wikiTitle = mkOption {
7676+ type = types.str;
7777+ default = "Gitit!";
7878+ description = "The wiki title.";
7979+ };
8080+8181+ repositoryType = mkOption {
8282+ type = types.enum ["git" "darcs" "mercurial"];
8383+ default = "git";
8484+ description = "Specifies the type of repository used for wiki content.";
8585+ };
8686+8787+ repositoryPath = mkOption {
8888+ type = types.path;
8989+ default = homeDir + "/wiki";
9090+ description = ''
9191+ Specifies the path of the repository directory. If it does not
9292+ exist, gitit will create it on startup.
9393+ '';
9494+ };
9595+9696+ requireAuthentication = mkOption {
9797+ type = types.enum [ "none" "modify" "read" ];
9898+ default = "modify";
9999+ description = ''
100100+ If 'none', login is never required, and pages can be edited
101101+ anonymously. If 'modify', login is required to modify the wiki
102102+ (edit, add, delete pages, upload files). If 'read', login is
103103+ required to see any wiki pages.
104104+ '';
105105+ };
106106+107107+ authenticationMethod = mkOption {
108108+ type = types.enum [ "form" "http" "generic"];
109109+ default = "form";
110110+ description = ''
111111+ 'form' means that users will be logged in and registered using forms
112112+ in the gitit web interface. 'http' means that gitit will assume that
113113+ HTTP authentication is in place and take the logged in username from
114114+ the "Authorization" field of the HTTP request header (in addition,
115115+ the login/logout and registration links will be suppressed).
116116+ 'generic' means that gitit will assume that some form of
117117+ authentication is in place that directly sets REMOTE_USER to the name
118118+ of the authenticated user (e.g. mod_auth_cas on apache). 'rpx' means
119119+ that gitit will attempt to log in through https://rpxnow.com. This
120120+ requires that 'rpx-domain', 'rpx-key', and 'base-url' be set below,
121121+ and that 'curl' be in the system path.
122122+ '';
123123+ };
124124+125125+ userFile = mkOption {
126126+ type = types.path;
127127+ default = homeDir + "/gitit-users";
128128+ description = ''
129129+ Specifies the path of the file containing user login information. If
130130+ it does not exist, gitit will create it (with an empty user list).
131131+ This file is not used if 'http' is selected for
132132+ authentication-method.
133133+ '';
134134+ };
135135+136136+ sessionTimeout = mkOption {
137137+ type = types.int;
138138+ default = 60;
139139+ description = ''
140140+ Number of minutes of inactivity before a session expires.
141141+ '';
142142+ };
143143+144144+ staticDir = mkOption {
145145+ type = types.path;
146146+ default = gititShared + "/data/static";
147147+ description = ''
148148+ Specifies the path of the static directory (containing javascript,
149149+ css, and images). If it does not exist, gitit will create it and
150150+ populate it with required scripts, stylesheets, and images.
151151+ '';
152152+ };
153153+154154+ defaultPageType = mkOption {
155155+ type = types.enum [ "markdown" "rst" "latex" "html" "markdown+lhs" "rst+lhs" "latex+lhs" ];
156156+ default = "markdown";
157157+ description = ''
158158+ Specifies the type of markup used to interpret pages in the wiki.
159159+ Possible values are markdown, rst, latex, html, markdown+lhs,
160160+ rst+lhs, and latex+lhs. (the +lhs variants treat the input as
161161+ literate Haskell. See pandoc's documentation for more details.) If
162162+ Markdown is selected, pandoc's syntax extensions (for footnotes,
163163+ delimited code blocks, etc.) will be enabled. Note that pandoc's
164164+ restructuredtext parser is not complete, so some pages may not be
165165+ rendered correctly if rst is selected. The same goes for latex and
166166+ html.
167167+ '';
168168+ };
169169+170170+ math = mkOption {
171171+ type = types.enum [ "mathml" "raw" "mathjax" "jsmath" "google" ];
172172+ default = "mathml";
173173+ description = ''
174174+ Specifies how LaTeX math is to be displayed. Possible values are
175175+ mathml, raw, mathjax, jsmath, and google. If mathml is selected,
176176+ gitit will convert LaTeX math to MathML and link in a script,
177177+ MathMLinHTML.js, that allows the MathML to be seen in Gecko browsers,
178178+ IE + mathplayer, and Opera. In other browsers you may get a jumble of
179179+ characters. If raw is selected, the LaTeX math will be displayed as
180180+ raw LaTeX math. If mathjax is selected, gitit will link to the
181181+ remote mathjax script. If jsMath is selected, gitit will link to the
182182+ script /js/jsMath/easy/load.js, and will assume that jsMath has been
183183+ installed into the js/jsMath directory. This is the most portable
184184+ solution. If google is selected, the google chart API is called to
185185+ render the formula as an image. This requires a connection to google,
186186+ and might raise a technical or a privacy problem.
187187+ '';
188188+ };
189189+190190+ mathJaxScript = mkOption {
191191+ type = types.str;
192192+ default = "https://d3eoax9i5htok0.cloudfront.net/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
193193+ description = ''
194194+ Specifies the path to MathJax rendering script. You might want to
195195+ use your own MathJax script to render formulas without Internet
196196+ connection or if you want to use some special LaTeX packages. Note:
197197+ path specified there cannot be an absolute path to a script on your
198198+ hdd, instead you should run your (local if you wish) HTTP server
199199+ which will serve the MathJax.js script. You can easily (in four lines
200200+ of code) serve MathJax.js using
201201+ http://happstack.com/docs/crashcourse/FileServing.html Do not forget
202202+ the "http://" prefix (e.g. http://localhost:1234/MathJax.js).
203203+ '';
204204+ };
205205+206206+ showLhsBirdTracks = mkOption {
207207+ type = yesNo;
208208+ default = "no";
209209+ description = ''
210210+ Specifies whether to show Haskell code blocks in "bird style", with
211211+ "> " at the beginning of each line.
212212+ '';
213213+ };
214214+215215+ templatesDir = mkOption {
216216+ type = types.path;
217217+ default = gititShared + "/data/templates";
218218+ description = ''
219219+ Specifies the path of the directory containing page templates. If it
220220+ does not exist, gitit will create it with default templates. Users
221221+ may wish to edit the templates to customize the appearance of their
222222+ wiki. The template files are HStringTemplate templates. Variables to
223223+ be interpolated appear between $\'s. Literal $\'s must be
224224+ backslash-escaped.
225225+ '';
226226+ };
227227+228228+ logFile = mkOption {
229229+ type = types.path;
230230+ default = homeDir + "/gitit.log";
231231+ description = ''
232232+ Specifies the path of gitit's log file. If it does not exist, gitit
233233+ will create it. The log is in Apache combined log format.
234234+ '';
235235+ };
236236+237237+ logLevel = mkOption {
238238+ type = types.enum [ "DEBUG" "INFO" "NOTICE" "WARNING" "ERROR" "CRITICAL" "ALERT" "EMERGENCY" ];
239239+ default = "ERROR";
240240+ description = ''
241241+ Determines how much information is logged. Possible values (from
242242+ most to least verbose) are DEBUG, INFO, NOTICE, WARNING, ERROR,
243243+ CRITICAL, ALERT, EMERGENCY.
244244+ '';
245245+ };
246246+247247+ frontPage = mkOption {
248248+ type = types.str;
249249+ default = "Front Page";
250250+ description = ''
251251+ Specifies which wiki page is to be used as the wiki's front page.
252252+ Gitit creates a default front page on startup, if one does not exist
253253+ already.
254254+ '';
255255+ };
256256+257257+ noDelete = mkOption {
258258+ type = types.str;
259259+ default = "Front Page, Help";
260260+ description = ''
261261+ Specifies pages that cannot be deleted through the web interface.
262262+ (They can still be deleted directly using git or darcs.) A
263263+ comma-separated list of page names. Leave blank to allow every page
264264+ to be deleted.
265265+ '';
266266+ };
267267+268268+ noEdit = mkOption {
269269+ type = types.str;
270270+ default = "Help";
271271+ description = ''
272272+ Specifies pages that cannot be edited through the web interface.
273273+ Leave blank to allow every page to be edited.
274274+ '';
275275+ };
276276+277277+ defaultSummary = mkOption {
278278+ type = types.str;
279279+ default = "";
280280+ description = ''
281281+ Specifies text to be used in the change description if the author
282282+ leaves the "description" field blank. If default-summary is blank
283283+ (the default), the author will be required to fill in the description
284284+ field.
285285+ '';
286286+ };
287287+288288+ tableOfContents = mkOption {
289289+ type = yesNo;
290290+ default = "yes";
291291+ description = ''
292292+ Specifies whether to print a tables of contents (with links to
293293+ sections) on each wiki page.
294294+ '';
295295+ };
296296+297297+ plugins = mkOption {
298298+ type = types.path;
299299+ default = gititShared + "/plugins/Dot.hs";
300300+ description = ''
301301+ Specifies a list of plugins to load. Plugins may be specified either
302302+ by their path or by their module name. If the plugin name starts
303303+ with Gitit.Plugin., gitit will assume that the plugin is an installed
304304+ module and will not try to find a source file.
305305+ Examples:
306306+ plugins: plugins/DotPlugin.hs, CapitalizeEmphasisPlugin.hs
307307+ plugins: plugins/DotPlugin
308308+ plugins: Gitit.Plugin.InterwikiLinks
309309+ '';
310310+ };
311311+312312+ useCache = mkOption {
313313+ type = yesNo;
314314+ default = "no";
315315+ description = ''
316316+ Specifies whether to cache rendered pages. Note that if use-feed is
317317+ selected, feeds will be cached regardless of the value of use-cache.
318318+ '';
319319+ };
320320+321321+ cacheDir = mkOption {
322322+ type = types.path;
323323+ default = homeDir + "/cache";
324324+ description = "Path where rendered pages will be cached.";
325325+ };
326326+327327+ maxUploadSize = mkOption {
328328+ type = types.str;
329329+ default = "1000K";
330330+ description = ''
331331+ Specifies an upper limit on the size (in bytes) of files uploaded
332332+ through the wiki's web interface. To disable uploads, set this to
333333+ 0K. This will result in the uploads link disappearing and the
334334+ _upload url becoming inactive.
335335+ '';
336336+ };
337337+338338+ maxPageSize = mkOption {
339339+ type = types.str;
340340+ default = "1000K";
341341+ description = "Specifies an upper limit on the size (in bytes) of pages.";
342342+ };
343343+344344+ debugMode = mkOption {
345345+ type = yesNo;
346346+ default = "no";
347347+ description = "Causes debug information to be logged while gitit is running.";
348348+ };
349349+350350+ compressResponses = mkOption {
351351+ type = yesNo;
352352+ default = "yes";
353353+ description = "Specifies whether HTTP responses should be compressed.";
354354+ };
355355+356356+ mimeTypesFile = mkOption {
357357+ type = types.path;
358358+ default = "/etc/mime/types.info";
359359+ description = ''
360360+ Specifies the path of a file containing mime type mappings. Each
361361+ line of the file should contain two fields, separated by whitespace.
362362+ The first field is the mime type, the second is a file extension.
363363+ For example:
364364+ video/x-ms-wmx wmx
365365+ If the file is not found, some simple defaults will be used.
366366+ '';
367367+ };
368368+369369+ useReCaptcha = mkOption {
370370+ type = yesNo;
371371+ default = "no";
372372+ description = ''
373373+ If "yes", causes gitit to use the reCAPTCHA service
374374+ (http://recaptcha.net) to prevent bots from creating accounts.
375375+ '';
376376+ };
377377+378378+ reCaptchaPrivateKey = mkOption {
379379+ type = with types; nullOr str;
380380+ default = null;
381381+ description = ''
382382+ Specifies the private key for the reCAPTCHA service. To get
383383+ these, you need to create an account at http://recaptcha.net.
384384+ '';
385385+ };
386386+387387+ reCaptchaPublicKey = mkOption {
388388+ type = with types; nullOr str;
389389+ default = null;
390390+ description = ''
391391+ Specifies the public key for the reCAPTCHA service. To get
392392+ these, you need to create an account at http://recaptcha.net.
393393+ '';
394394+ };
395395+396396+ accessQuestion = mkOption {
397397+ type = types.str;
398398+ default = "What is the code given to you by Ms. X?";
399399+ description = ''
400400+ Specifies a question that users must answer when they attempt to
401401+ create an account
402402+ '';
403403+ };
404404+405405+ accessQuestionAnswers = mkOption {
406406+ type = types.str;
407407+ default = "RED DOG, red dog";
408408+ description = ''
409409+ Specifies a question that users must answer when they attempt to
410410+ create an account, along with a comma-separated list of acceptable
411411+ answers. This can be used to institute a rudimentary password for
412412+ signing up as a user on the wiki, or as an alternative to reCAPTCHA.
413413+ Example:
414414+ access-question: What is the code given to you by Ms. X?
415415+ access-question-answers: RED DOG, red dog
416416+ '';
417417+ };
418418+419419+ rpxDomain = mkOption {
420420+ type = with types; nullOr str;
421421+ default = null;
422422+ description = ''
423423+ Specifies the domain and key of your RPX account. The domain is just
424424+ the prefix of the complete RPX domain, so if your full domain is
425425+ 'https://foo.rpxnow.com/', use 'foo' as the value of rpx-domain.
426426+ '';
427427+ };
428428+429429+ rpxKey = mkOption {
430430+ type = with types; nullOr str;
431431+ default = null;
432432+ description = "RPX account access key.";
433433+ };
434434+435435+ mailCommand = mkOption {
436436+ type = types.str;
437437+ default = "sendmail %s";
438438+ description = ''
439439+ Specifies the command to use to send notification emails. '%s' will
440440+ be replaced by the destination email address. The body of the
441441+ message will be read from stdin. If this field is left blank,
442442+ password reset will not be offered.
443443+ '';
444444+ };
445445+446446+ resetPasswordMessage = mkOption {
447447+ type = types.lines;
448448+ default = ''
449449+ > From: gitit@$hostname$
450450+ > To: $useremail$
451451+ > Subject: Wiki password reset
452452+ >
453453+ > Hello $username$,
454454+ >
455455+ > To reset your password, please follow the link below:
456456+ > http://$hostname$:$port$$resetlink$
457457+ >
458458+ > Regards
459459+ '';
460460+ description = ''
461461+ Gives the text of the message that will be sent to the user should
462462+ she want to reset her password, or change other registration info.
463463+ The lines must be indented, and must begin with '>'. The initial
464464+ spaces and '> ' will be stripped off. $username$ will be replaced by
465465+ the user's username, $useremail$ by her email address, $hostname$ by
466466+ the hostname on which the wiki is running (as returned by the
467467+ hostname system call), $port$ by the port on which the wiki is
468468+ running, and $resetlink$ by the relative path of a reset link derived
469469+ from the user's existing hashed password. If your gitit wiki is being
470470+ proxied to a location other than the root path of $port$, you should
471471+ change the link to reflect this: for example, to
472472+ http://$hostname$/path/to/wiki$resetlink$ or
473473+ http://gitit.$hostname$$resetlink$
474474+ '';
475475+ };
476476+477477+ useFeed = mkOption {
478478+ type = yesNo;
479479+ default = "no";
480480+ description = ''
481481+ Specifies whether an ATOM feed should be enabled (for the site and
482482+ for individual pages).
483483+ '';
484484+ };
485485+486486+ baseUrl = mkOption {
487487+ type = with types; nullOr str;
488488+ default = null;
489489+ description = ''
490490+ The base URL of the wiki, to be used in constructing feed IDs and RPX
491491+ token_urls. Set this if use-feed is 'yes' or authentication-method
492492+ is 'rpx'.
493493+ '';
494494+ };
495495+496496+ absoluteUrls = mkOption {
497497+ type = yesNo;
498498+ default = "no";
499499+ description = ''
500500+ Make wikilinks absolute with respect to the base-url. So, for
501501+ example, in a wiki served at the base URL '/wiki', on a page
502502+ Sub/Page, the wikilink '[Cactus]()' will produce a link to
503503+ '/wiki/Cactus' if absolute-urls is 'yes', and a relative link to
504504+ 'Cactus' (referring to '/wiki/Sub/Cactus') if absolute-urls is 'no'.
505505+ '';
506506+ };
507507+508508+ feedDays = mkOption {
509509+ type = types.int;
510510+ default = 14;
511511+ description = "Number of days to be included in feeds.";
512512+ };
513513+514514+ feedRefreshTime = mkOption {
515515+ type = types.int;
516516+ default = 60;
517517+ description = "Number of minutes to cache feeds before refreshing.";
518518+ };
519519+520520+ pdfExport = mkOption {
521521+ type = yesNo;
522522+ default = "no";
523523+ description = ''
524524+ If yes, PDF will appear in export options. PDF will be created using
525525+ pdflatex, which must be installed and in the path. Note that PDF
526526+ exports create significant additional server load.
527527+ '';
528528+ };
529529+530530+ pandocUserData = mkOption {
531531+ type = with types; nullOr path;
532532+ default = null;
533533+ description = ''
534534+ If a directory is specified, this will be searched for pandoc
535535+ customizations. These can include a templates/ directory for custom
536536+ templates for various export formats, an S5 directory for custom S5
537537+ styles, and a reference.odt for ODT exports. If no directory is
538538+ specified, $HOME/.pandoc will be searched. See pandoc's README for
539539+ more information.
540540+ '';
541541+ };
542542+543543+ xssSanitize = mkOption {
544544+ type = yesNo;
545545+ default = "yes";
546546+ description = ''
547547+ If yes, all HTML (including that produced by pandoc) is filtered
548548+ through xss-sanitize. Set to no only if you trust all of your users.
549549+ '';
550550+ };
551551+ };
552552+553553+ configFile = pkgs.writeText "gitit.conf" ''
554554+ address: ${cfg.address}
555555+ port: ${toString cfg.port}
556556+ wiki-title: ${cfg.wikiTitle}
557557+ repository-type: ${cfg.repositoryType}
558558+ repository-path: ${cfg.repositoryPath}
559559+ require-authentication: ${cfg.requireAuthentication}
560560+ authentication-method: ${cfg.authenticationMethod}
561561+ user-file: ${cfg.userFile}
562562+ session-timeout: ${toString cfg.sessionTimeout}
563563+ static-dir: ${cfg.staticDir}
564564+ default-page-type: ${cfg.defaultPageType}
565565+ math: ${cfg.math}
566566+ mathjax-script: ${cfg.mathJaxScript}
567567+ show-lhs-bird-tracks: ${cfg.showLhsBirdTracks}
568568+ templates-dir: ${cfg.templatesDir}
569569+ log-file: ${cfg.logFile}
570570+ log-level: ${cfg.logLevel}
571571+ front-page: ${cfg.frontPage}
572572+ no-delete: ${cfg.noDelete}
573573+ no-edit: ${cfg.noEdit}
574574+ default-summary: ${cfg.defaultSummary}
575575+ table-of-contents: ${cfg.tableOfContents}
576576+ plugins: ${cfg.plugins}
577577+ use-cache: ${cfg.useCache}
578578+ cache-dir: ${cfg.cacheDir}
579579+ max-upload-size: ${cfg.maxUploadSize}
580580+ max-page-size: ${cfg.maxPageSize}
581581+ debug-mode: ${cfg.debugMode}
582582+ compress-responses: ${cfg.compressResponses}
583583+ mime-types-file: ${cfg.mimeTypesFile}
584584+ use-recaptcha: ${cfg.useReCaptcha}
585585+ recaptcha-private-key: ${toString cfg.reCaptchaPrivateKey}
586586+ recaptcha-public-key: ${toString cfg.reCaptchaPublicKey}
587587+ access-question: ${cfg.accessQuestion}
588588+ access-question-answers: ${cfg.accessQuestionAnswers}
589589+ rpx-domain: ${toString cfg.rpxDomain}
590590+ rpx-key: ${toString cfg.rpxKey}
591591+ mail-command: ${cfg.mailCommand}
592592+ reset-password-message: ${cfg.resetPasswordMessage}
593593+ use-feed: ${cfg.useFeed}
594594+ base-url: ${toString cfg.baseUrl}
595595+ absolute-urls: ${cfg.absoluteUrls}
596596+ feed-days: ${toString cfg.feedDays}
597597+ feed-refresh-time: ${toString cfg.feedRefreshTime}
598598+ pdf-export: ${cfg.pdfExport}
599599+ pandoc-user-data: ${toString cfg.pandocUserData}
600600+ xss-sanitize: ${cfg.xssSanitize}
601601+ '';
602602+603603+in
604604+605605+{
606606+607607+ options.services.gitit = gititOptions;
608608+609609+ config = mkIf cfg.enable {
610610+611611+ users.extraUsers.gitit = {
612612+ group = config.users.extraGroups.gitit.name;
613613+ description = "Gitit user";
614614+ home = homeDir;
615615+ createHome = true;
616616+ uid = config.ids.uids.gitit;
617617+ };
618618+619619+ users.extraGroups.gitit.gid = config.ids.gids.gitit;
620620+621621+ systemd.services.gitit = let
622622+ uid = toString config.ids.uids.gitit;
623623+ gid = toString config.ids.gids.gitit;
624624+ in {
625625+ description = "Git and Pandoc Powered Wiki";
626626+ after = [ "network.target" ];
627627+ wantedBy = [ "multi-user.target" ];
628628+629629+ preStart = with cfg; ''
630630+ chown ${uid}:${gid} -R ${homeDir}
631631+ for dir in ${repositoryPath} ${staticDir} ${templatesDir} ${cacheDir}
632632+ do
633633+ if [ ! -d $dir ]
634634+ then
635635+ mkdir -p $dir
636636+ find $dir -type d -exec chmod 0750 {} +
637637+ find $dir -type f -exec chmod 0640 {} +
638638+ fi
639639+ done
640640+ cd ${repositoryPath}
641641+ if [ ! -d .git ]
642642+ then
643643+ ${pkgs.git}/bin/git init
644644+ ${pkgs.git}/bin/git config user.email "gitit@${config.networking.hostName}"
645645+ ${pkgs.git}/bin/git config user.name "gitit"
646646+ chown ${uid}:${gid} -R {repositoryPath}
647647+ fi
648648+ cd -
649649+ '';
650650+651651+ serviceConfig = {
652652+ User = config.users.extraUsers.gitit.name;
653653+ Group = config.users.extraGroups.gitit.name;
654654+ ExecStart = with cfg; gititSh haskellPackages extraPackages;
655655+ };
656656+ };
657657+ };
658658+}
659659+
+5-5
nixos/modules/services/misc/nix-daemon.nix
···329329 text =
330330 concatMapStrings (machine:
331331 "${if machine ? sshUser then "${machine.sshUser}@" else ""}${machine.hostName} "
332332- + (if machine ? system then machine.system else concatStringsSep "," machine.systems)
333333- + " ${machine.sshKey} ${toString machine.maxJobs} "
334334- + (if machine ? speedFactor then toString machine.speedFactor else "1" )
332332+ + machine.system or (concatStringsSep "," machine.systems)
333333+ + " ${machine.sshKey or "-"} ${toString machine.maxJobs or 1} "
334334+ + toString (machine.speedFactor or 1)
335335 + " "
336336- + (if machine ? supportedFeatures then concatStringsSep "," machine.supportedFeatures else "" )
336336+ + concatStringsSep "," (machine.mandatoryFeatures or [] ++ machine.supportedFeatures or [])
337337 + " "
338338- + (if machine ? mandatoryFeatures then concatStringsSep "," machine.mandatoryFeatures else "" )
338338+ + concatStringsSep "," machine.mandatoryFeatures or []
339339 + "\n"
340340 ) cfg.buildMachines;
341341 };
···1919 ];
20202121 meta = with lib; {
2222- description = "A tool to scrape a Prometheus client and dump the result as JSON.";
2222+ description = "A tool to scrape a Prometheus client and dump the result as JSON";
2323 homepage = https://github.com/prometheus/prom2json;
2424 license = licenses.asl20;
2525 maintainers = with maintainers; [ benley ];
+1-1
pkgs/servers/nosql/eventstore/default.nix
···47474848 meta = {
4949 homepage = https://geteventstore.com/;
5050- description = "Event sourcing database with processing logic in JavaScript.";
5050+ description = "Event sourcing database with processing logic in JavaScript";
5151 license = stdenv.lib.licenses.bsd3;
5252 maintainers = with stdenv.lib.maintainers; [ puffnfresh ];
5353 platforms = with stdenv.lib.platforms; linux;
···2929 doCheck = false; # no check rule
30303131 meta = {
3232- description = "PGP Tools is a collection for all kinds of pgp related things, including signing scripts, party preparation scripts etc.";
3232+ description = "A collection for all kinds of pgp related things, including signing scripts, party preparation scripts etc";
3333 homepage = http://pgp-tools.alioth.debian.org;
3434 platforms = gnupg.meta.platforms;
3535 license = stdenv.lib.licenses.gpl2;
···280280 outputFiles = [ "FSharp.AutoComplete/bin/Release/*" ];
281281282282 meta = {
283283- description = "This project provides a command-line interface to the FSharp.Compiler.Service project. It is intended to be used as a backend service for rich editing or 'intellisense' features for editors.";
284284- homepage = "https://github.com/fsharp/FSharp.AutoComplete";
283283+ description = "An interface to the FSharp.Compiler.Service project";
284284+ longDescription = ''
285285+ This project provides a command-line interface to the
286286+ FSharp.Compiler.Service project. It is intended to be used as a backend
287287+ service for rich editing or 'intellisense' features for editors.
288288+ '';
289289+ homepage = https://github.com/fsharp/FSharp.AutoComplete;
285290 license = stdenv.lib.licenses.asl20;
286291 maintainers = with stdenv.lib.maintainers; [ obadz ];
287292 platforms = with stdenv.lib.platforms; linux;
···498503 dontStrip = true;
499504500505 meta = {
501501- description = "NDesk.Options is a callback-based program option parser for C#.";
502502- homepage = "http://www.ndesk.org/Options";
506506+ description = "A callback-based program option parser for C#";
507507+ homepage = http://www.ndesk.org/Options;
503508 license = stdenv.lib.licenses.mit;
504509 maintainers = with stdenv.lib.maintainers; [ obadz ];
505510 platforms = with stdenv.lib.platforms; linux;
···677682 outputFiles = [ "bin/net40/*" ];
678683679684 meta = {
680680- description = "A declarative CLI argument/XML configuration parser for F# applications.";
681681- homepage = "http://nessos.github.io/UnionArgParser/";
685685+ description = "A declarative CLI argument/XML configuration parser for F# applications";
686686+ homepage = http://nessos.github.io/UnionArgParser/;
682687 license = stdenv.lib.licenses.mit;
683688 maintainers = with stdenv.lib.maintainers; [ obadz ];
684689 platforms = with stdenv.lib.platforms; linux;
-74
pkgs/top-level/platforms.nix
···303303 #kernelHeadersBaseConfig = "guruplug_defconfig";
304304 };
305305306306- versatileARM = {
307307- name = "versatileARM";
308308- kernelMajor = "2.6";
309309- kernelHeadersBaseConfig = "versatile_defconfig";
310310- kernelBaseConfig = "versatile_defconfig";
311311- kernelArch = "arm";
312312- kernelAutoModules = false;
313313- kernelTarget = "zImage";
314314- kernelExtraConfig =
315315- ''
316316- MMC_ARMMMCI y
317317- #MMC_SDHCI y
318318- SERIO_AMBAKMI y
319319-320320- AEABI y
321321- RTC_CLASS y
322322- RTC_DRV_PL031 y
323323- PCI y
324324- SCSI y
325325- SCSI_DMA y
326326- SCSI_ATA y
327327- BLK_DEV_SD y
328328- BLK_DEV_SR y
329329- SCSI_SYM53C8XX_2 y
330330-331331- TMPFS y
332332- IPV6 m
333333- REISERFS_FS m
334334- EXT4_FS m
335335-336336- IP_PNP y
337337- IP_PNP_DHCP y
338338- IP_PNP_BOOTP y
339339- ROOT_NFS y
340340- '';
341341- uboot = null;
342342- };
343343-344344- integratorCP = {
345345- name = "integratorCP";
346346- kernelMajor = "2.6";
347347- kernelHeadersBaseConfig = "integrator_defconfig";
348348- kernelBaseConfig = "integrator_defconfig";
349349- kernelArch = "arm";
350350- kernelAutoModules = false;
351351- kernelTarget = "zImage";
352352- kernelExtraConfig =
353353- ''
354354- # needed for qemu integrator/cp
355355- SERIAL_AMBA_PL011 y
356356- SERIAL_AMBA_PL011_CONSOLE y
357357- SERIAL_AMBA_PL010 n
358358- SERIAL_AMBA_PL010_CONSOLE n
359359-360360- MMC_ARMMMCI y
361361- MMC_SDHCI y
362362- SERIO_AMBAKMI y
363363-364364- CPU_ARM926T y
365365- ARCH_INTEGRATOR_CP y
366366- VGA_CONSOLE n
367367- AEABI y
368368- '';
369369- uboot = null;
370370- ubootConfig = "integratorcp_config";
371371- };
372372-373373- integratorCPuboot = integratorCP // {
374374- name = "integratorCPuboot";
375375- kernelTarget = "uImage";
376376- uboot = "upstream";
377377- ubootConfig = "integratorcp_config";
378378- };
379379-380306 fuloong2f_n32 = {
381307 name = "fuloong2f_n32";
382308 kernelMajor = "2.6";
+76-11
pkgs/top-level/python-packages.nix
···171171 pyqt5 = callPackage ../development/python-modules/pyqt/5.x.nix {
172172 sip = self.sip_4_16;
173173 pythonDBus = self.dbus;
174174- qt5 = pkgs.qt53;
174174+ qt5 = pkgs.qt5;
175175 };
176176177177 sip = callPackage ../development/python-modules/sip { };
···305730573058305830593059 eyeD3 = buildPythonPackage rec {
30603060- version = "0.7.4";
30603060+ version = "0.7.8";
30613061 name = "eyeD3-${version}";
30623062 disabled = isPyPy;
3063306330643064 src = pkgs.fetchurl {
30653065- url = "http://eyed3.nicfit.net/releases/${name}.tgz";
30663066- sha256 = "001hzgqqnf2ig432mq78jsxidpky2rl2ilm28xwjp32vzphycf51";
30653065+ url = "http://eyed3.nicfit.net/releases/${name}.tar.gz";
30663066+ sha256 = "1nv7nhfn1d0qm7rgkzksbccgqisng8klf97np0nwaqwd5dbmdf86";
30673067 };
3068306830693069 buildInputs = with self; [ paver ];
3070307030713071 postInstall = ''
30723072 for prog in "$out/bin/"*; do
30733073- wrapProgram "$prog" --prefix PYTHONPATH : "$PYTHONPATH"
30733073+ wrapProgram "$prog" --prefix PYTHONPATH : "$PYTHONPATH" \
30743074+ --prefix PATH : ${python}/bin
30743075 done
30753076 '';
30763077···33863387 };
33873388 };
3388338933903390+ humanize = buildPythonPackage rec {
33913391+ version = "0.5.1";
33923392+ name = "humanize-${version}";
33933393+33943394+ src = pkgs.fetchurl {
33953395+ url = "https://pypi.python.org/packages/source/h/humanize/${name}.tar.gz";
33963396+ md5 = "e8473d9dc1b220911cac2edd53b1d973";
33973397+ };
33983398+33993399+ buildInputs = with self; [ mock ];
34003400+34013401+ doCheck = false;
34023402+34033403+ meta = {
34043404+ description = "python humanize utilities";
34053405+ homepage = https://github.com/jmoiron/humanize;
34063406+ license = licenses.mit;
34073407+ maintainers = with maintainers; [ matthiasbeyer ];
34083408+ platforms = platforms.linux; # can only test on linux
34093409+ };
34103410+34113411+ };
34123412+33893413 hovercraft = buildPythonPackage rec {
33903414 disabled = ! isPy3k;
33913415 name = "hovercraft-${version}";
···34103434 };
34113435 };
3412343634373437+ httpauth = buildPythonPackage rec {
34383438+ version = "0.2";
34393439+ name = "httpauth-${version}";
34403440+34413441+ src = pkgs.fetchurl {
34423442+ url = "https://pypi.python.org/packages/source/h/httpauth/${name}.tar.gz";
34433443+ md5 = "78d1835a80955e68e98a3ca5ab7f7dbd";
34443444+ };
34453445+34463446+ doCheck = false;
34473447+34483448+ meta = {
34493449+ description = "WSGI HTTP Digest Authentication middleware";
34503450+ homepage = https://github.com/jonashaag/httpauth;
34513451+ license = licenses.bsd2;
34523452+ maintainers = with maintainers; [ matthiasbeyer ];
34533453+ };
34543454+ };
34553455+34133456 itsdangerous = buildPythonPackage rec {
34143457 name = "itsdangerous-0.24";
34153458···51955238 };
5196523951975240 meta = {
51985198- description = "simple wrapper around fribidi.";
51995199- homepage = "https://github.com/pediapress/pyfribidi";
52415241+ description = "A simple wrapper around fribidi";
52425242+ homepage = https://github.com/pediapress/pyfribidi;
52005243 license = stdenv.lib.licenses.gpl2;
52015244 };
52025245 };
···66166659 };
66176660 };
6618666166626662+ klaus = buildPythonPackage rec {
66636663+ version = "0.4.9";
66646664+ name = "klaus-${version}";
66656665+66666666+ src = pkgs.fetchurl {
66676667+ url = "https://github.com/jonashaag/klaus/archive/${version}.tar.gz";
66686668+ sha256 = "0qcbv3shz530mn53pdc68fx38ylz72033xsrz77ffi0cks32az2w";
66696669+ };
66706670+66716671+ propagatedBuildInputs = with self;
66726672+ [ humanize httpauth dulwich pygments flask ];
66736673+66746674+ meta = {
66756675+ description = "The first Git web viewer that Just Works";
66766676+ homepage = "https://github.com/jonashaag/klaus";
66776677+ #license = licenses.mit; # I'm not sure about the license
66786678+ maintainers = with maintainers; [ matthiasbeyer ];
66796679+ platforms = platforms.linux; # Can only test linux
66806680+ };
66816681+ };
66826682+66196683 kombu = buildPythonPackage rec {
66206684 name = "kombu-${version}";
66216685 version = "3.0.24";
···93019365 };
9302936693039367 meta = {
93049304- description = ''PicoSAT is a popular SAT solver written by Armin
93689368+ description = "Python bindings for PicoSAT";
93699369+ longDescription = ''PicoSAT is a popular SAT solver written by Armin
93059370 Biere in pure C. This package provides efficient Python bindings
93069371 to picosat on the C level, i.e. when importing pycosat, the
93079372 picosat solver becomes part of the Python process itself. For
···1101311078 };
11014110791101511080 repocheck = buildPythonPackage rec {
1101611016- name = "repocheck-2015-05-04";
1108111081+ name = "repocheck-2015-06-27";
1101711082 disabled = isPy26 || isPy27;
11018110831101911084 src = pkgs.fetchFromGitHub {
1102011020- sha256 = "0zk8n4sm7i488wgqljkfjd2j0hm0qimxr9dhdz6d7xal7apwh71x";
1102111021- rev = "db8c336f071ead3375805b7a78ca3d7c862536db";
1108511085+ sha256 = "0psihwph10sx07xc2gfch739laz7x1kwl5c991cci8cfn5jzy8bp";
1108611086+ rev = "231e05b4fa55955ef8492581a15f508ffa0037d4";
1102211087 repo = "repocheck";
1102311088 owner = "kynikos";
1102411089 };