Norman,
I think you are right to point to Nix on Noux, and I will make it my next priority. Even if it were practical to reuse legacy package expressions from Nixpkgs it would be much easier if there was a mature Noux Nix running natively rather than going through a lot of cross-compilation and bootstrapping on a Linux host first.
Getting Nix to compile should be straightforward, but building and storing outputs will take some consideration and probably a few design iterations to work well on Genode, though I'm certain it will yield some novel improvements over POSIX Nix. I don't yet have any concrete ideas on what changes would be made, but I will know more as I inspect Noux and Nix.
Emery
On Tue, Dec 30, 2014 at 01:26:11PM +0100, Norman Feske wrote:
- Adapt the Nix packages collection to build its existing packages for
   Noux. This similar to how packages may be built for Darwin or BSD,   I would abort converting Make rules for anything not required for    bootstrapping a Noux toolchain.
Even though that sounds intriguing at the first glance, I cannot say that I regard the porting of Noux packages as a big hurdle right now. So far, my attempts to port software packages that use the GNU build system went actually fairly smooth. Personally, I am not so much interested in a big volume of packages. In my day to day work, only a few packages are actually used (the most significant gap in this respect is a proper LaTeX environment). While porting software to Noux, the most prominent stumbling blocks use to be functionalities missing from our C runtime (e.g., if a program relies on Unix signals), performance bottlenecks, or limitations of our terminal (e.g., lack of support for ANSI pseudo graphics). None of those issues will go away with the switch of Noux packages to Nix.
- Work towards running virtualizing instances of NixOS, building the Genode
   host and the NixOS guest concurrently.
I have had success related to virtualizing, I have managed to integrate my build expressions with the NixOS system expression on my host machine, installing a NOVA scenario to my boot partition and GRUB menu. One could obviously do this with a set of scripts calling make, but in this way the Genode components are treated as system dependencies just as my linux host would treat its system services.
I think the next logical step in this line of thought would be to build my Linux host system as an image optimized for Seoul, but I am traveling at the moment and virtualizing Seoul scenarios has been slow going with only a single laptop.
That looks interesting and very much in line with the plans I laid out in my initial posting. But you approach the idea from a different angle. I am curious where this development is heading.
As another idea, have you considered to port Nix to Noux? That would further blur the line between NixOS and Genode.
Cheers Norman
-- Dr.-Ing. Norman Feske Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Hi Emery,
thank you for considering my suggestion!
On 01/04/2015 07:48 PM, emery@...261... wrote:
I think you are right to point to Nix on Noux, and I will make it my next priority. Even if it were practical to reuse legacy package expressions from Nixpkgs it would be much easier if there was a mature Noux Nix running natively rather than going through a lot of cross-compilation and bootstrapping on a Linux host first.
I think that besides enabling package management on Genode, bringing the Nix package manager to Noux would have a very welcome side effect with respect to the overall theme outlined in my initial posting (making Genode usable). I expect that you will hit several limitations of Noux (e.g., functional gaps or performance issues) on your way. So stressing Noux by your line of work would pressure us to fix those issues and make Noux better for everyone. In this spirit, I encourage you to share any trouble of using Noux with us. ;-)
Getting Nix to compile should be straightforward, but building and storing outputs will take some consideration and probably a few design iterations to work well on Genode, though I'm certain it will yield some novel improvements over POSIX Nix. I don't yet have any concrete ideas on what changes would be made, but I will know more as I inspect Noux and Nix.
I agree. From reading the Nix documentation, I even got the impression that some of the "quirky" aspects of Nix (i.e., the need of the Nix daemon) stem from Linux' limitation of having one global VFS. On Genode, we don't have this limitation as each Noux instance can have its own VFS. I am curios to see how this may benefit the use of Nix on our platform.
Cheers Norman