<mark_weaver>transactions on your profile are atomic in the sense that any changes (installs+removes+upgrades) are done by making a fresh new profile (symlink tree) with the new set of installed packages, and then the ~/.guix-profile symlink is changed to point to the new profile.
<mark_weaver>civodul: no, we pretty much ruled that out. he has 8G of memory and ~500M used.
<mark_weaver>but if you run multiple "guix package" commands on the same profile simultaneously, then it's likely that they will both build new profiles based on the same starting set of packages, and thus one of the installs will effectively be lost.
<roelj>mark_weaver: Sorry, I was away for a moment.
<mark_weaver>civodul: should we have some kind of per-profile locking to prevent this kind of lossage?
<mark_weaver>roelj: here's a crazy theory: are you sure that the UIDs you assigned to the 'guix-builder' users are unique, and don't collide with any existing user ids?
<mark_weaver>(there might be some cleanup when a build is started and/or finished that kills all the processes by that build user)
<mark_weaver>roelj: also, you didn't add yourself to the 'guix-builder' group, did you?
<mark_weaver>because I guess that 'guix-daemon' picks any user from the build-users-group that's not currently doing a build, and then probably at some point kills all the processes owned by that user.
<civodul>mark_weaver: yes we could have profile locking
<civodul>that didn't seem very useful, but why not
<mark_weaver>roelj: remove yourself from the 'guix-builder' group.
<mark_weaver>roelj: here's what happened: the guix-daemon chose 'roel' as the build user for one of its build processes, and then at some point (probably after the build) killed off all processes owned by 'roel' to clean up.
<mark_weaver>when you log in, it initializes the set of groups you're in from the database, so you still have rights to the group, but the guix-daemon shouldn't see that at this point, so it won't pick you again.
<roelj>Thanks a lot! I find it really cool how you (civodul and mark_weaver) have figured out what the problem could be.
<roelj>Is there some way to fix my parallel installs, or should I just remove the generations that were created and "forgotten"?
<roelj>and install them again one by one (not that much work :))
<mark_weaver>you don't have to install them one by one. it's faster to do multiple installs in a single command "guix package" command.
<civodul>each "guix package" invocation is a transaction
<civodul>so if you install 5 packages with a single "guix package" invocation, --roll-back would roll back all 5 installations
<mark_weaver>we can't do parallel installs to the same profile. probably the best we could hope for is a locking mechanism that makes you wait until one command finishes before starting the next one.
<mark_weaver>I suppose it would be possible to tell SRFI-37 that the argument to install/remove/upgrade is optional, but then arrange by other means to verify that at least one argument is provided, although that would get a bit messy.
<roelj>So, Guix separates packages per user. How can the linux-libre package be used?
<roelj>Should I manually update my /boot/grub/grub.cfg file to boot the kernel from /nix/store or /home/roel/.guix-profile/?
<mark_weaver>definitely don't boot from the .guix-profile symlink. booting directly from /nix/store would be fine, or make a symlink from somewhere to it. I'm not sure what the recommended practice is at this point.
<mark_weaver>I guess you'll need a symlink from /lib/modules/* as well