Hi Tim, Generally, in NixOS we achieve effects outside of the store in a two-phase process: We have derivations to create data (config files, systemd units, shell scripts, etc.) in the store that represent the end state we want (including a master activation script that joins all the rest into a whole), and then a particular system state is transitioned to by running the top level script.
Generally, these derivations are generated from a declarative specification made possible by a module system implemented purely in nix. We work hard to make the generated scripts idempotent, to make it possible to transition arbitrarily between system configurations, to make the system behave identically (for the relevant aspects) if a given system configuration is switched to after having previously used thousands of different configurations compared to if a system is freshly installed with that configuration. We try to minimize the chances of inconsistent system state. But generally these things are much harder to achieve when considering an operating system as a whole rather than an immutable file store, so guarantees are obviously less stringent than what we can offer in the nix store itself. Regarding your initial question: Already, we have NixOS modules to describe the partitions/filesystems in use. There's no fundamental reason why that information couldn't be used to automatically partition and install filesystems, at least in simple cases, but currently it is only used to manage fstab, determine which filesystems to boot from the initrd, etc. IMO an automated partitioning system based on a NixOS config would be an awesome addition. Cheers, Shea On 8/17/13 7:22 AM, Tim Barbour wrote: > I would like to be able to boot from nixos installation media, then do > automated partitioning, LVM setup and filesystem creation, then let nixops do > the rest. What is the best way to automate partitioning, LVM setup and > filesystem creation ? I wrote a shell script to do this (just for one disk, so > far) using parted etc., but it looks ugly, and I wonder if it would be better > done using nix. > > Does nix / nixos provide any existing mechanisms for doing this ? > > I am an experienced functional programmer (Haskell, not nix), but I don't > understand how to do IO in nix. Perhaps I should be modelling the disk setup > as the building of some derivations, but such derivations would not produce a > result in the nix store. If I made them produce a result in the store, then > the disk setup would be a side-effect, and not referentially transparent. I > get the feeling that this is outside the scope of nix. > > Tim > --- > GPG public key available at: > http://phasechangeit.com/~trb/gpg-key or > http://subkeys.pgp.net:11371 > _______________________________________________ > nix-dev mailing list > [email protected] > http://lists.science.uu.nl/mailman/listinfo/nix-dev _______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
