[Nix-dev] Multiple Profiles per User

Darcy Watkins DWatkins at tranzeo.com
Wed May 28 15:46:13 CEST 2008


Hello,

I would like to see a feature something along the lines of having
multiple profiles for a user.  The idea would be to have one per project
workspace in a development area.  It would still be OK to have a default
profile per user much like what is currently implemented.

The application is software development and multiple maintenance where
you release one version of a product and then have to support a
maintenance stream alongside of continued development.  In SVN/CVS
scheme of things, this is having one project workspace be based on the
trunk, and the other be based on a branch.

1.  I would like to be able to have each workspace be connected to its
own profile.
2.  I would like the context to switch automatically as I switch back
and forth between the two.
3.  I would like the choice to be part of what is checked into version
control.

In the development scheme of things, I would normally want to update the
trunk's set of toolchain version as new features, etc becom available,
but I would want to lock the branch used for maintenance of the released
version on the set of toolchain versions that were current at the time
of the release.  If I upgrade a tool, I want it to be something under my
control (and the decision version controlled).

I think that the ability of nix to support multiple sets of toolchain
packages is powerful and would be helpful for production software
development applications like I described above.

I think at present this could sort of be done using multiple user IDs
but I would like to see something like having a profile symlink at the
top directory of each branch.

We would need the ability to mark a point in a directory structure as
being the top of where a profile is being used.

We would need the ability to change the profile per such point.  Perhaps
the usual commands to install/remove/update the toolchain packages could
be used as before.

We would need the ability, at a given point, to be able to generate a
set of applicable packages / versions so that if the project is checked
out on another machine and then used, the nix system would create the
profile (including building any toolchain packages needed of the correct
versions).

I think it should then theoretically be easy to add a rule to the
project's makefile to invoke a couple of nix commands to prepare and
validate the workspace toolchain environment before proceeding with the
actual build of the project code.

Any suggestions where such a feature should be hooked in?


Regards,

Darcy




More information about the nix-dev mailing list