Hi -- This is as likely as good a time and place as any to describe a work-in-progess @rpm5.org.
I'm the lead developer @rpm5.org (http://rpm5.org) as well as a researcher with the Mancoosi (http://mancoosi.org) WP3 project. There's been a fair amount of interest in Nix and NixOS in my professional efforts over the last year. Over the last couple of weeks, I've finally found the opportunity to look seriously at the Nix implementation. As part of studying Nix, I've now merged all the nix executables into @rpm5.org CVS. Here are the specifics (note: "xiu" is "nix" inverted in ASCII): Direct imports of C++ code from NIX: /usr/bin/nix-hash (xiu-hash.c will replace) /usr/bin/nix-instantiate (xiu-instantiate.c may replace) /usr/bin/nix-store (xiu-store.c may replace) /usr/bin/nix-log2xml /usr/bin/nix-env /usr/bin/nix-worker Rewritten from perl -> C (largely complete, mostly untested): /usr/bin/nix-build /usr/bin/nix-channel /usr/bin/nix-collect-garbage /usr/bin/nix-copy-closure /usr/bin/nix-install-package /usr/bin/nix-pull (needs readmanifest parser) /usr/bin/nix-push (needs readmanifest parser) Rewritten from shell -> C (and functional afaict so far): /usr/bin/nix-prefetch-url While the code above is currently only "proof-of-concept" hackery (i.e. I literally recoded the perl/shell line-by-line into C) and all of the executables are quite buggy and leaky, I have succeeded in eliminating any need for /usr/bin/perl, and (before I'm done), will likely be able to eliminate any need for /usr/bin/curl and/or /usr/libexec/nix/bzip2. If there's interest from NixOS, I can/will attempt to send along production quality C code that could be integrated with Nix. So far I have used only a few RPM peculier API's: argv.c for string arrays macro.c for popen/pclose and string concatenation that could be re-implemented in any number of ways. I've also used popt for a common approach to CLI option processing. E.g. I'd suggest that rewriting the nix-prefetch-url in something other than shell would be quite useful: shell isn't the right implementation language for what nix-prefetch-url is doing. JMHO. Is there interest in replacing some of the executables in nix? hth 73 de Jeff _______________________________________________ nix-dev mailing list [email protected] https://mail.cs.uu.nl/mailman/listinfo/nix-dev
