We're building the GNU system [pdf]
git.savannah.gnu.org
git.savannah.gnu.org
While git has received a lot of well-deserved criticism for it's complexity, "git commit" is a lot better than "git --commit".
guix package -i emacs -r zile
than your alternative: guix package install emacs remove zile
Bear in mind that a transaction could get arbitrarily long.Describing transactions with arguments seems clunky at best.
I've been using NixOS happily for over a year now. The "secret sauce" is the same between Guix and NixOS. The main differences are:
* Programming language (Guile vs Nix)
* Choice of basic building blocks such as dmd / systemd
* Strong preference for GNU tools in Guix
* No support for unfree packages at all in Guix (in NixOS, they're disabled by default, but you can enable them)
On the OS side, dmd is also pretty damn cool. The whole system feels kind of polished and reminded me much of current *BSD systems, including a decent texinfo manual on the first boot. With the difference that you get a working framebuffer through linux on startup.
While NixOS is kind of an academical experiment, I think Guix really has the potential to become the only true GNU system. It still lacks stability and has some rough edges of course. Maybe Guix will also help merging the Emacs and GNU operating systems to create a single, tightly integrated Lisp OS ;) There is already an Emacs interface for Guix.
The ideas behind Nix/Guix are really interesting and a major improvement from traditional packagement solutions, and personally I much prefer using Scheme than a Haskell-derived DSL to configure my environment and operating system.
The problem is a political one: NixOS ships with current Linux standard technologies such as systemd, while this Guix-based OS uses this GNU dmd project I've never heard of until now, but I have no doubts its features and maturity is a fraction of systemd's (whatever is your opinion on systemd).
All for the sake of the free software radicalism. I love GNU and FSF and everything, but as a Linux user and administrator I'd really like we settle on something and build from there.
I may be mistaken, and open to criticism.
"Seriously, when was the last time you heard someone arguing whether it's dmd or DMD, or the same for any other init system other than SystemD? The reason SystemD fags complain is because they want people to respect their brand image - they're in the marketing business. Nobody else gives a shit."
You, uh, wow.
Aforementioned discorteous post from reddit user would really be understandable coming from a GNU enthusiast if caustic in form.
As for maturity, you are mistaken. GNU dmd was first started around 2003, before even launchd existed.
As a comparison, the Hurd project started in 1990, Ubuntu in 2004. Which one is more mature? That is, which one would you use in a production environment?
However, I'm curious about containers. For example systemd-nspawn seems like a simple way to achieve many of the functionality NixOS brings into the table.
I'm not aware of a way to do that in Nix, but I think it's more a consequence that the convention is to call
stdenv.mkDerivation { descriptor }
(where the descriptor includes things like the upstream url, version, etc.)without providing a direct handle to the descriptor (which one might inherit and modify just the upstream url, for example).
(In practice, I find it an order of magnitude easier to create custom packages in Nix compared to .deb.)
To do this with any derivation in in nixpkgs, call pkgs.lib.overrideDerivation on it, passing the relevant new attributes. This'll inherit the old attributes, only modifying the ones you supply. This is described in the manual: http://nixos.org/nixos/manual/#sec-customising-packages
Also, finally, Lisp as a GNU systems programming language is becoming reality. :)
[0] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_...
I feel lisp enlightenment is long overdue for me. I'm just too busy for the past few years.
[0] https://www.gnu.org/software/emacs/manual/html_node/elisp/Us...
I agree that Scheme would be a better choice of an extension language, and honestly I think Stallman would probably agree. It's more that changing the extension language would cause a lot of compatibility problems. I hope the Guile Emacs guys can pull it off.
RMS could in theory have adopted a Scheme, or even a lexicaly scoped version of mainline LISP, but by then he was so experienced with normal, pre-Common Lisp mainline LISP (Maclisp and Lisp Machine Lisp) I'd wonder if it even occurred to him.
http://www.gnu.org/software/emacs/manual/html_mono/calc.html
But Stallman argued (in one of the early emacs papers) that dynamic scope is much more convenient for a editor than lexical scoping (as implemented in scheme or Common Lisp)
Dynamic scope makes it easier to change some variable per buffer. With lexical scoping you would need to simulate dynamic scope somehow to be able to change state per buffer.
Emacs-like editors have been implemented in it, and there's no fundamental reason that a true Emacs couldn't be.
Scheme is more of a toy; I'd not prefer it to Common Lisp for a production system, whether that system is an OS or an editing environment.
But you would need dynamic scope in Scheme to mix elisp/Guile code in Emacs?
Edit: Ah, this was discussed in your link at the top of this comment thread.
http://www.emacswiki.org/emacs-en/GuileEmacs
> As of the end of GoogleSummerOfCode 2014, the Elisp engine of Emacs is fully replaced with that of libguile, and most things Just Work™. Some performance regression of dynamic scoping (lexically scoped code should be fine), and broken corner cases (like crazy Elisp macros that directly output legacy Elisp bytecode) remain.
On the other hand, they made the unorthodox decision to switch from dmd to sysvinit. Probably one of the very little systems to switch to SysV, rather than from it.
Yes, here's the announcement: https://lists.debian.org/debian-devel-announce/2014/05/msg00...
This is the blog of the person who did it, which features detailed development logs: https://teythoon.cryptobitch.de/
I started to think: if dmd was revived in 2013, how could Debian/Hurd have started the effort to switch away from it in the same year?
This post talks of Debian/Hurd having "relied on its own init and rc system": http://osdir.com/ml/general/2014-01/msg61628.html
It requires QEMU.