nanonixos

Documentation
Login

How I use this

Get a copy of this repository:

fossil clone http://vicerveza.homeunix.net/~viric/cgi-bin/nanonixos nanonixos.fossil
mkdir nanonixos
fossil open ../nanonixos.fossil

Get a checkout of nixpkgs stdenv-updates:

svn co https://svn.nixos.org/repos/nix/nixpkgs/branches/stdenv-updates

Then make your environment variable NANONIXOS_NIXPKGS point to where you have stdenv-updates.

Then you can get qemu running the ubifs image of nanonixos by:

nix-build -A emulate
sh emulate

Prepare an image for the nanonote

nix-build -A kernelImage
nix-build -A ubootImage
nix-build -A rootfsImage

How to update a running installation

STOREPATH=`nix-build -A activate`
# (note the result of the command above, a store path)
nix-store --export `nix-store -qR $STOREPATH` | ssh root@IP "nix-store --import"
ssh root@IP $STOREPATH
# To keep the activate script as gcroot
ssh root@IP ln -sf $STOREPATH /activate

A more clever approach (more as a personal note):

ssh root@nanonote "NIX_ROOT_FINDER= nix-store --gc --print-live" > list2
nix-store -qR result | ( while read A; do grep -q $A list2 || echo $A ; done ) > list3
nix-store --export `cat list3` | ssh root@nanonote "nix-store --import"

Garbage collection

nix-store calls some perl script that we can't run until we cross-build perl, to find the runtime gcroots. But we can skip it this way:

NIX_ROOT_FINDER= nix-store --gc