~ruther/guix-local

59b775cca97813a24e529171606e967b61e80877 — Ludovic Courtès 13 years ago 10226c0
doc: Add "Adding new packages" in `HACKING'.

* HACKING (Adding new packages): New section.
1 files changed, 44 insertions(+), 0 deletions(-)

M HACKING
M HACKING => HACKING +44 -0
@@ 9,6 9,50 @@ Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
  notice and this notice are preserved.


* Adding new packages

Package recipes in Guix look like this:

#+BEGIN_SRC scheme
  (package
    (name "nettle")
    (version "2.5")
    (source
      (origin
        (method http-fetch)
        (uri (string-append "http://ftp.gnu.org/gnu/nettle/nettle-"
                            version ".tar.gz"))
        (sha256
          (base32
            "0wicr7amx01l03rm0pzgr1qvw3f9blaw17vjsy1301dh13ll58aa"))))
    (build-system gnu-build-system)
    (inputs `(("gnum4" ,gnum4)))
    (propagated-inputs `(("gmp" ,gmp)))
    (home-page
      "http://www.lysator.liu.se/~nisse/nettle/")
    (synopsis "GNU Nettle, a cryptographic library")
    (description
      "Nettle is a cryptographic library...")
    (license "GPLv2+"))
#+END_SRC

Such a recipe can be written by hand, and then tested by running
‘./pre-inst-env guix-build nettle’.

When writing the recipe, the base32-encoded SHA256 hash of the source
code tarball, which can be seen in the example above, can be obtained by
running:

  guix-download http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz

Alternatively, it is possible to semi-automatically import recipes from
the [[http://nixos.org/nixpkgs/][Nixpkgs]] software distribution using this command:

  guix-import /path/to/nixpkgs/checkout nettle

The command automatically fetches and converts to Guix the “Nix
expression” of Nettle.

* Porting the Guix distro on a new platform

** Introduction