From 77161de4546697f9bf2da6d081eeba4c399b3313 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Tue, 1 May 2018 19:54:21 -0400 Subject: nixpkgs docs: format =) --- doc/quick-start.xml | 372 ++++++++++++++++++++++++++-------------------------- 1 file changed, 184 insertions(+), 188 deletions(-) (limited to 'doc/quick-start.xml') diff --git a/doc/quick-start.xml b/doc/quick-start.xml index ca86e6c9519b..0cba3a4769c4 100644 --- a/doc/quick-start.xml +++ b/doc/quick-start.xml @@ -1,223 +1,219 @@ - -Quick Start to Adding a Package - -To add a package to Nixpkgs: - - - - - Checkout the Nixpkgs source tree: - + Quick Start to Adding a Package + + To add a package to Nixpkgs: + + + + Checkout the Nixpkgs source tree: $ git clone git://github.com/NixOS/nixpkgs.git $ cd nixpkgs - - - - - Find a good place in the Nixpkgs tree to add the Nix - expression for your package. For instance, a library package - typically goes into - pkgs/development/libraries/pkgname, - while a web browser goes into - pkgs/applications/networking/browsers/pkgname. - See for some hints on the tree - organisation. Create a directory for your package, e.g. - + + + + Find a good place in the Nixpkgs tree to add the Nix expression for your + package. For instance, a library package typically goes into + pkgs/development/libraries/pkgname, + while a web browser goes into + pkgs/applications/networking/browsers/pkgname. + See for some hints on the tree + organisation. Create a directory for your package, e.g. $ mkdir pkgs/development/libraries/libfoo - - - - - In the package directory, create a Nix expression — a piece - of code that describes how to build the package. In this case, it - should be a function that is called with the - package dependencies as arguments, and returns a build of the - package in the Nix store. The expression should usually be called - default.nix. - + + + + In the package directory, create a Nix expression — a piece of code that + describes how to build the package. In this case, it should be a + function that is called with the package dependencies + as arguments, and returns a build of the package in the Nix store. The + expression should usually be called default.nix. $ emacs pkgs/development/libraries/libfoo/default.nix $ git add pkgs/development/libraries/libfoo/default.nix - - - You can have a look at the existing Nix expressions under - pkgs/ to see how it’s done. Here are some - good ones: - - - - - GNU Hello: + You can have a look at the existing Nix expressions under + pkgs/ to see how it’s done. Here are some good + ones: + + + + GNU Hello: + pkgs/applications/misc/hello/default.nix. - Trivial package, which specifies some meta - attributes which is good practice. - - - - GNU cpio: meta + attributes which is good practice. + + + + + GNU cpio: + pkgs/tools/archivers/cpio/default.nix. - Also a simple package. The generic builder in - stdenv does everything for you. It has - no dependencies beyond stdenv. - - - - GNU Multiple Precision arithmetic library (GMP): stdenv + does everything for you. It has no dependencies beyond + stdenv. + + + + + GNU Multiple Precision arithmetic library (GMP): + pkgs/development/libraries/gmp/5.1.x.nix. - Also done by the generic builder, but has a dependency on - m4. - - - - Pan, a GTK-based newsreader: m4. + + + + + Pan, a GTK-based newsreader: + pkgs/applications/networking/newsreaders/pan/default.nix. - Has an optional dependency on gtkspell, - which is only built if spellCheck is - true. - - - - Apache HTTPD: gtkspell, which is + only built if spellCheck is true. + + + + + Apache HTTPD: + pkgs/servers/http/apache-httpd/2.4.nix. - A bunch of optional features, variable substitutions in the - configure flags, a post-install hook, and miscellaneous - hackery. - - - - Thunderbird: + + + + Thunderbird: + pkgs/applications/networking/mailreaders/thunderbird/default.nix. - Lots of dependencies. - - - - JDiskReport, a Java utility: + + + + JDiskReport, a Java utility: + pkgs/tools/misc/jdiskreport/default.nix - (and the builder). - Nixpkgs doesn’t have a decent stdenv for - Java yet so this is pretty ad-hoc. - - - - XML::Simple, a Perl module: stdenv for Java yet + so this is pretty ad-hoc. + + + + + XML::Simple, a Perl module: + pkgs/top-level/perl-packages.nix - (search for the XMLSimple attribute). - Most Perl modules are so simple to build that they are - defined directly in perl-packages.nix; - no need to make a separate file for them. - - - - Adobe Reader: XMLSimple attribute). Most Perl + modules are so simple to build that they are defined directly in + perl-packages.nix; no need to make a separate file + for them. + + + + + Adobe Reader: + pkgs/applications/misc/adobe-reader/default.nix. - Shows how binary-only packages can be supported. In - particular the builder - uses patchelf to set the RUNPATH and ELF - interpreter of the executables so that the right libraries - are found at runtime. - - - - + uses patchelf to set the RUNPATH and ELF interpreter + of the executables so that the right libraries are found at runtime. + + + - - Some notes: - - - - - All meta - attributes are optional, but it’s still a good idea to - provide at least the description, - homepage and license. - - - - You can use nix-prefetch-url (or similar nix-prefetch-git, etc) - url to get the SHA-256 hash of - source distributions. There are similar commands as nix-prefetch-git and - nix-prefetch-hg available in nix-prefetch-scripts package. - - - - A list of schemes for mirror:// - URLs can be found in pkgs/build-support/fetchurl/mirrors.nix. - - - - + + Some notes: + + + + All meta attributes are + optional, but it’s still a good idea to provide at least the + description, homepage and + license. + + + + + You can use nix-prefetch-url (or similar + nix-prefetch-git, etc) url to get the + SHA-256 hash of source distributions. There are similar commands as + nix-prefetch-git and + nix-prefetch-hg available in + nix-prefetch-scripts package. + + + + + A list of schemes for mirror:// URLs can be found in + pkgs/build-support/fetchurl/mirrors.nix. + + + - - The exact syntax and semantics of the Nix expression - language, including the built-in function, are described in the - Nix manual in the + The exact syntax and semantics of the Nix expression language, including + the built-in function, are described in the Nix manual in the + chapter - on writing Nix expressions. - - - - - Add a call to the function defined in the previous step to - . + + + + + Add a call to the function defined in the previous step to + pkgs/top-level/all-packages.nix - with some descriptive name for the variable, - e.g. libfoo. - - + with some descriptive name for the variable, e.g. + libfoo. + $ emacs pkgs/top-level/all-packages.nix - - - The attributes in that file are sorted by category (like - “Development / Libraries”) that more-or-less correspond to the - directory structure of Nixpkgs, and then by attribute name. - - - - To test whether the package builds, run the following command - from the root of the nixpkgs source tree: - - + + The attributes in that file are sorted by category (like “Development / + Libraries”) that more-or-less correspond to the directory structure of + Nixpkgs, and then by attribute name. + + + + + To test whether the package builds, run the following command from the + root of the nixpkgs source tree: + $ nix-build -A libfoo - - where libfoo should be the variable name - defined in the previous step. You may want to add the flag - to keep the temporary build directory in case - something fails. If the build succeeds, a symlink - ./result to the package in the Nix store is - created. - - - - If you want to install the package into your profile - (optional), do - - + where libfoo should be the variable name defined in the + previous step. You may want to add the flag to keep + the temporary build directory in case something fails. If the build + succeeds, a symlink ./result to the package in the + Nix store is created. + + + + + If you want to install the package into your profile (optional), do + $ nix-env -f . -iA libfoo - - - - - Optionally commit the new package and open a pull request, or send a patch to - https://groups.google.com/forum/#!forum/nix-devel. - - - - - - - + + + + Optionally commit the new package and open a pull request, or send a patch + to https://groups.google.com/forum/#!forum/nix-devel. + + + + -- cgit v1.2.3