Subject: Tor daemon is unable to use obfuscation

From: nigko <[email-masked]>
Date: Tue, 9 Apr 2024 14:55:44 +0500

Hello Guix!

I am trying to configure tor daemon to use traffic obfuscation by the 
following lines in my system configuration

(service tor-service-type
	(tor-configuration
	   (plain-file "torrc"
"
UseBridges 1
ClientTransportPlugin obfs4 exec /path/to/obfuscator/binary

Bridge obfs4 ......
Bridge obfs4 ......
")))

where /path/to/obfuscator/binary corresponds to an obfs4 obfuscator. 
There are a few of them in the guix repo, see e.g. 
go-gitlab-torproject-org-tpo-anti-censorship-pluggable-transports-lyrebird 
or go-github-com-operatorfoundation-obfs4 packages. The obfuscator is 
also installed in the system profile. Bridges are gotten from the 
official site https://bridges.torproject.org/.

This torrc configuration works perfectly on guix when tor run at user 
level by command '$ tor -f path/to/torrc' and '# netstat -tupan' shows 
obfuscator process is listening on 127.0.0.1:[some random port].

However, when tor run as system daemon, there are no obfuscator process 
listening and tor is unusable.

Perhaps this issue is related to https://issues.guix.gnu.org/57222.
I have tried to revert commit fb868cd7794f15e21298e5bdea996fbf0dad17ca 
on recent guix checkout and then to perform 'guix pull 
--url=/path/to/my/local/guix/repo --disable-authentication'. It worked 
fined. But when performing 'sudo guix system reconfigure 
/path/to/system/configuration' I got an error 
'make-forkexec-constructor/container: unbound variable'

Regards,
Nigko Yerden