@@ -7,7 +7,7 @@
71) Vorstellung des Nix Paket-Managers
71) Vorstellung des Nix Paket-Managers
9 - Übersicht der besonderen Features
9 - Übersicht der besonderen Features
10− - Der Paket-Store
10+ - Die Paket-Datenbank
11 - Nix als Programmiersprache
11 - Nix als Programmiersprache
132) Installation von Haskell-Paketen
132) Installation von Haskell-Paketen
@@ -63,7 +63,24 @@
63- In `/nix/store` installierte Pakete referenzieren niemals
63- In `/nix/store` installierte Pakete referenzieren niemals
64 Dateien außerhalb des Stores.
64 Dateien außerhalb des Stores.
68+- Nixpkgs ist eine Sammlung von Build-Rezepten, die in der rein
69+funktionalen Sprache *Nix* geschrieben sind.
71+- Ein Paket wird erzeugt durch die Funktion `derivation`:
73+ derivation :: String -- Arch-OS
74+ -> String -- Name-Version
75+ -> [String] -- Build-Kommando
76+ -> [StorePath] -- Abhängigkeiten
77+ -> [(String,String)] -- Shell-Umgebung
80+- Nixpkgs bietet verschiedene `mkDerivation`-Wrapper, um die Verwendung
81+von `derivation` vereinfachen.
66−# Das Nix-Programm für `parsec 3.1.3`
83+# Das Paket `parsec 3.1.3`
68 { cabal, mtl, text }:
85 { cabal, mtl, text }:
@@ -84,10 +101,10 @@
84 /nix/store/i0k3s...-haskell-text-ghc7.6.3-0.11.3.1
101 /nix/store/i0k3s...-haskell-text-ghc7.6.3-0.11.3.1
85 /nix/store/q8163...-haskell-transformers-ghc7.6.3-0.3.0.0
102 /nix/store/q8163...-haskell-transformers-ghc7.6.3-0.3.0.0
87− building path(s) `/nix/store/0xfxh1ncksix601m9n71fw1wkfhmsjjz-user-environment'
104+ building path(s) `/nix/store/0xfxh...-user-environment'
88 created 22 symlinks in user environment
105 created 22 symlinks in user environment
90−# Das Nix-Programm für `yesod 1.2.1`
107+# Das Paket für `yesod 1.2.1`
92 { cabal, aeson, blazeHtml, blazeMarkup, dataDefault,
109 { cabal, aeson, blazeHtml, blazeMarkup, dataDefault,
93 , hamlet monadControl, networkConduit, safe,
110 , hamlet monadControl, networkConduit, safe,
@@ -106,3 +123,24 @@
106 yesodCore yesodForm yesodPersistent
123 yesodCore yesodForm yesodPersistent
127+# Die Programmiersprache Nix
129+- Nix ist lazy-evaluiertes ungetyptes Lambda-Kalkül.
131+- Strings: `"hello world"`, `http://example.org/`
133+- Listen: `[ 12 "abc" http://example.org ]`
135+- Funktionen: `list: element: list ++ [element]`
137+- Dictionaries: { foo = "foo"; foo = "bar; }
139+- Rekursive Dictionaries:
141+ rec { bar = "foo"; bar = "bar; foobar = foo + bar; }
145+ let append = { list ? [], element }: list++[element];
146+ in append { list = ["abc" 3]; element = null; }