git.iko.soy/typeable/cabal2nix
on master help sign in
doc: more slides
commit2b66220e4f6e973e12c5b665b9fa45e0652ec302 authorPeter Simons <simons@cryp.to> dateTue 19 May 2015, 13:10 (11 years ago) parent1732003
1 file changed+69
doc/user-guide.md+69
doc/user-guide.md+69
@@ -228,6 +228,75 @@ Every Haskell package has an `env` attribute that provides a temporary shell env
228228
229229-------------------------------------------------------------------------------
230230
231+# Create a development environment for your own packages
232+
233+ $ nix-env -iA cabal2nix
234+
235+ $ cabal2nix --shell . >shell.nix
236+ $ nix-shell --command "cabal configure"
237+
238+ $ cabal build
239+ [...]
240+
241+-------------------------------------------------------------------------------
242+
243+# Create a development environment for your own packages
244+
245+ $ cabal2nix --shell .
246+ with (import <nixpkgs> {}).pkgs;
247+ let pkg = haskellPackages.callPackage
248+ ({ mkDerivation, base, stdenv, transformers }:
249+ mkDerivation {
250+ pname = "mtl";
251+ version = "2.2.1";
252+ src = ./.;
253+ buildDepends = [ base transformers ];
254+ homepage = "http://github.com/ekmett/mtl";
255+ license = stdenv.lib.licenses.bsd3;
256+ }) {};
257+ in
258+ pkg.env
259+
260+-------------------------------------------------------------------------------
261+
262+# Create builds for your own packages
263+
264+ $ cd ~/src/foo
265+ $ cabal2nix . > default.nix
266+
267+Now edit `~/.nixpkgs/config.nix`:
268+
269+ {
270+ packageOverrides = super: let self = super.pkgs; in
271+ {
272+ foo = self.haskellPackages.callPackage
273+ ../src/foo {};
274+ };
275+ }
276+
277+Build it by running "`nix-env -iA foo`".
278+
279+-------------------------------------------------------------------------------
280+
281+# Create builds for your own packages
282+
283+Use this `~/.nixpkgs/config.nix` file to register the build inside of
284+`haskellPackages`, so that other libraries may depend on it:
285+
286+ {
287+ packageOverrides = super: let self = super.pkgs; in
288+ {
289+ haskellPackages = super.haskellPackages.override {
290+ overrides = self: super: {
291+ foo = self.callPackage ../src/foo {};
292+ bar = self.callPackage ../src/bar {};
293+ };
294+ };
295+ };
296+ }
297+
298+-------------------------------------------------------------------------------
299+
231300# Where to get help ...
232301
233302- `https://nixos.org/`