Subject: bug#39968: nix-service-type doesn't work because of missing gcroots

From: Damien Cassou <[email-masked]>
Date: Sat, 07 Mar 2020 08:58:37 +0100

Hi,

I'm trying to install Nix in a Guix System VM.

The Guix manual for the nix-service-type says to run
/run/current-system/profile/etc/profile.d/nix.sh but the script
complains that /nix/var/nix/gcroots/per-user/cassou doesn't exist.

I've added both the Nix service type and the Nix package to my
configuration. After building the VM and starting it, I see a /nix/
folder, this is good.

The Guix manual says to add a channel so I followed the steps of the Nix
manual (https://nixos.org/nix/manual/#sec-channels) as normal user:

$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
$ nix-channel --update
$ nix-env -u
error: expected JSON value
(use '--show-trace' to show detailed location information)
$ echo $?
1

Passing --show-trace reveals a long stack strace saying that
callPackageWith failed in nixpkgs/lib/customisation.nix. So I tried with
the nixos-20.03 channel instead of the nixpkgs-unstable and I managed to
get nix-env -u to not complain.

The Guix manual then asks to do:

$ ln -s "/nix/var/nix/profiles/per-user/$USER/profile" ~/.nix-profile
$ source /run/current-system/profile/etc/profile.d/nix.sh
mkdir: cannot create directory /nix/var/nix/gcroots/per-user/cassou:
permission denied
stat: cannot stat /nix/var/nix/gcroots/per-user/cassou: No such file or
directory
Nix: WARNING: bad ownership on /nix/var/nix/gcroots/per-user/cassou,
should be 1000

It seems /nix/var/nix/gcroots/per-user exists but the folder is empty.

Best

-- 
Damien Cassou

"Success is the ability to go from one failure to another without
losing enthusiasm." --Winston Churchill