Develop

berlinjs meetup Feb 2015

Test

Deploy

using

Nix

#nix #nixos #berlinjs

Rok Garbas, @garbas

berlinjs meetup Feb 2015

Is there a problem?

berlinjs meetup Feb 2015

Is JavaScript special?

berlinjs meetup Feb 2015

What is Nix?

TO INSTALL

  % curl https://nixos.org/nix/install | sh


TO UNINSTALL

  % rm -Rf /nix
  % rm -Rf ~/.nix*

berlinjs meetup Feb 2015

Nix protects me, against me

UPDATE CHANNELS (look at this as apt-get update)

  % nix-channel --update


INSTALL "tig" application

  % nix-env --list-generations
  1002   2015-01-23 04:29:40   
  1003   2015-01-23 04:44:51

  % nix-env -i tig

  % nix-env --list-generations
  1002   2015-01-23 04:29:40   
  1003   2015-01-23 04:44:51   
  1004   2015-01-23 04:50:11

UNDO / ROLLBACK

  % nix-env --rollback   <or  nix-env --switch-generation 1003>

  % nix-env --list-generations
  1002   2015-01-23 04:29:40   
  1003   2015-01-23 04:44:51   

berlinjs meetup Feb 2015

How can Nix do this?

HOOKS INTO BASH

  % echo $PATH
  /home/rok/.nix-profile/bin:/home/rok/.nix-profile/sbin:...

  % tree -L 2 `realpath ~/.nix-profile`
  /nix/store/xj8592ssnmcsn1kvbf87nm1acllwcqan-user-environment
  ├── bin
  │   ├── tig -> /nix/store/j3scw814k79mj3mm6x6yj9svvcq1plx4-tig-2.0.3/bin/tig
  │   ├── tree -> /nix/store/g75lq2kmfwx5sdqni6khv04kdklh3kq9-tree-1.7.0/bin/tree
  ├── etc
  │   ├── bash_completion.d -> /nix/store/j3scw814k79mj3mm6x6yj9svvcq1plx4-tig-2.0.3/etc/bash_completion.d
  │   └── tigrc -> /nix/store/j3scw814k79mj3mm6x6yj9svvcq1plx4-tig-2.0.3/etc/tigrc
  └── manifest.nix -> /nix/store/gjia0lic4v117fm3la3c4wkk6ig2iw3q-env-manifest.nix

/nix/store/j3scw814k79mj3mm6x6yj9svvcq1plx4-tig-2.0.3

/nix/store/

+

<hash>

+

<name>

+

<version>

berlinjs meetup Feb 2015

But what does this has to do with JavaScript?

TOOL THAT RESOLVES NPM DEPENDENCIES
    AND CREATES NIX EXPRESSIONS

  % nix-env -i npm2nix

  % cd to/some/npm-package

  % npm2nix package.json package.nix


ENTER THE VIRTUAL SHELL (CUSTOM $PATH) WITH ALL
   DEPENDENCIES OF 'npm-package' INSTALLED

  % nix-shell

berlinjs meetup Feb 2015

Is this all that Nix can do?

Hydra

NixOS

NixOps

source / binary model

multi-user

reproducable

multi-version

portable

berlinjs meetup Feb 2015

Thank you

and stay "pure"

First Nix/NixOS meetup

Wed, 4.4. 2015

final wors...

#nix #nixos #berlinjs

Rok Garbas, @garbas

Develop, test and deploy using nix

By Rok Garbas

Develop, test and deploy using nix

  • 1,422