23.01.2024 16:17:48 CET Marek Paśnikowski: > Dear All > > This is my first attempt to connect to my personal Guix channel. After > ironing out server-side inadequacies in my configuration code, I > encountered a very resilient, cryptic error. > > After one day of experimentation, where nothing I did made the error change, > I turn to your experience and knowledge. Could I ask to take a look at my > repository ( hosted on https://git.marekpasnikowski.pl/channel.git , branch > wip-channel - master has incorrect parens in authorization code ) and see > if I missed anything in the file structure? > > Also, I would appreciate a confirmation whether the channel can be pulled on > your system. I do keep in mind a possibility of a local impurity or cache > poison. > > Here is my current channels.scm: > > ( list > ( channel > ( name 'guix ) > ( branch "master" ) > ( url "https://git.savannah.gnu.org/git/guix.git" ) > ( introduction > ( make-channel-introduction > "9edb3f66fd807b096b48283debdcddccfea34bad" > ( openpgp-fingerprint > "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA" ) ) ) ) > ( channel > ( name 'personal-channel ) > ( branch "wip-channel" ) > ( introduction > ( make-channel-introduction > "f8ccfe8f3e5c8bafe06665cbd4b0c9301e1a64b6" > ( openpgp-fingerprint > "590E 500F E39D 26B3 E60B 743B 6D81 B120 7711 899F" ) ) ) > ( url "https://git.marekpasnikowski.pl/git/channel.git" ) ) ) > > And this is the COMPLETE build log I receive every single time: > > $ zcat /var/log/guix/drvs/hg/15jjf4dr5z7lsfvcj07z2mrw69kzvp-personal- > channel.drv.gz > > (repl-version 0 1 1) > (exception unbound-variable (value #f) (value "Unbound variable: ~S") (value > (channel)) (value #f)) SOLVED I am tired of still having to deal with this, so please forgive for using the minimal words to share the solution. I have experimentally, in three reproduction cycles, found out the following "Laws of Guix Channel": 1. .guix-channel file must exist in the top directory, and must include as dependencies all other channels implied with (use-modules) or #:use-module in the file tree. 2. All .scm files in the file tree must be proper modules. 3. .guix-authorizations in the top directory is optional. On top of this, Guix does not care if the given directory is version tracked. In my case, I was able to use my "secrets" directory (which is a plain, external subfolder), as a dependency of my channel, with no issues. Thank you Felix, for making me aware of how to integrate the channels.scm file into the home-configuration data structure cleanly. I will use this information in future. Thank you Clement for taking a look at my code. Even if your comments were not directly helpful, they were indeed a valuable input in my experimentation logic. PS: If you are curious, here is a link to the code commit which documents this chain of error-solutions. Do note that the description chronology is reversed, due to git's behaviour when squashing. The referenced commits are archived in the museum-fix-channel-pull branch. https://git.marekpasnikowski.pl/channel.git/commit/? id=223caedde6ea3c4fb3a5c285a0f70ea443dd7ef0