by Joshua Branson ? October 27, 2025
Heyo!
So at the lab, I've got a Talos II dual booting Chimera Linux + guix and Fedora Linux. At the moment, we are booting into Fedora Linux more often. This blog post is really meant as documentation for someone whose interested in Chimera Linux, and for me, so I don't forget how to set up Chimera Linux + guix. It is not a highly polished blog post. You have been warned. :)
chimera linux
upgrading chimera linux
https://chimera-linux.org/docs/apk
joshua@dobby.lan:~/ $ doas apk update
joshua@dobby.lan:~/ $ doas apk upgrade
Sometimes you may need to run the above commands as, which will remove unnecessary packages.
joshua@dobby.lan:~/ $ doas apk update --available
joshua@dobby.lan:~/ $ doas apk upgrade
Sometimes when Chimera updates the linux kernel, grub does not properly generate the its configuration file. Run this to generate grub's configuration file.
# grub-mkconfig -o /boot/grub/grub.cfg
DONE setting up btrfs on the two 18 TB drives
I followed this advice and used btrfs:
https://wiki.cachyos.org/installation/filesystem/
joshua@dobby.lan:~/ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 1.8T 0 disk
??????sda1 8:1 0 1.8T 0 part /
sdb 8:16 0 18.2T 0 disk
??????sdb1 8:17 0 18.2T 0 part
sdc 8:32 0 18.2T 0 disk
??????sdc1 8:33 0 18.2T 0 part https://wiki.cachyos.org/installation/filesystem/
# mkfs.btrfs -d raid1 -m raid1 /dev/sdb1 /dev/sdc1
# mkfs.btrfs -L RAIDbtrfs18TiB -d raid1 -m raid1 /dev/sdb1 /dev/sdc1
I went ahead and tweaked fstab to use labels. Now I should be able to mix and match my harddrives and booting should still work.
joshua@dobby.lan:~/ $ cat /etc/fstab
#
# See fstab(5).
#
# <file system> <dir> <type> <options> <dump> <pass>
LABEL=ext4Root / ext4 defaults 0 1
LABEL=RAIDbtrfs18TiB /mnt btrfs defaults 0 1
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0DONE Gettizng X applications and gdm to run on chimera
All power9 machines have trouble running X, when a discrete GPU is installed. click here to read more on the raptor wiki.
raptor pdf user's guide:
https://wiki.raptorcs.com/w/images/e/e3/T2P9D01_users_guide_version_1_0.pdf
raptor wiki ways to fix this
Tell GDM to ignore a GPU
joshua@dobby.lan:~/ $ lspci | grep VGA0005:02:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41) 0030:01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon Pro WX 7100]joshua@dobby.lan:~/ $ cat /etc/udev/udev.conf# see udev.conf(5) for details # # udevd is also started in the initrd. When this file is modified you might # also want to rebuild the initrd, so that it will include the modified configuration. #udev_log=info #children_max= #exec_delay= #event_timeout=180 #timeout_signal=SIGKILL #resolve_names=early TAG-="seat", ENV{ID_FOR_SEAT}=="drm-pci-0005_02_00_0" TAG-="seat", ENV{ID_FOR_SEAT}=="graphics-pci-0005_02_00_0"Do this to re-generate the initramfs.
doas apk fix linux-ltsXorg will not start / crashes when a discrete GPU is installed
We chose to do the workaround 2: select a desired GPU at runtime, which means that if we change the slot of the GPU, then we will have to re-create the Xorg configuration file.
joshua@dobby.lan:~/ $ lspci | grep VGA0005:02:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41) 0030:01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon Pro WX 7100]Aspped lspci output
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup> <col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" /> </colgroup> <tbody> <tr> <td class="org-left">hexadecimal</td> <td class="org-right">d</td> <td class="org-right">B</td> <td class="org-right">D</td> <td class="org-right">F</td> </tr>
<tr> <td class="org-left">?</td> <td class="org-right">5</td> <td class="org-right">2</td> <td class="org-right">0</td> <td class="org-right">0</td> </tr>
<tr> <td class="org-left">decimal</td> <td class="org-right">5</td> <td class="org-right">2</td> <td class="org-right">0</td> <td class="org-right">0</td> </tr>
<tr> <td class="org-left">Xorg format</td> <td class="org-right">?</td> <td class="org-right">?</td> <td class="org-right">?</td> <td class="org-right">?</td> </tr>
<tr> <td class="org-left">?</td> <td class="org-right">B</td> <td class="org-right">d</td> <td class="org-right">D</td> <td class="org-right">F</td> </tr>
<tr> <td class="org-left">?</td> <td class="org-right">2</td> <td class="org-right">5</td> <td class="org-right">0</td> <td class="org-right">0</td> </tr> </tbody> </table>
"PCI:B@d:D:F" "PCI:2@5:0:0"
AMD card
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup> <col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" /> </colgroup> <tbody> <tr> <td class="org-left">hexadecimal</td> <td class="org-right">d</td> <td class="org-right">B</td> <td class="org-right">D</td> <td class="org-right">F</td> </tr>
<tr> <td class="org-left">?</td> <td class="org-right">30</td> <td class="org-right">1</td> <td class="org-right">0</td> <td class="org-right">0</td> </tr>
<tr> <td class="org-left">decimal</td> <td class="org-right">48</td> <td class="org-right">1</td> <td class="org-right">0</td> <td class="org-right">0</td> </tr>
<tr> <td class="org-left">Xorg format</td> <td class="org-right">?</td> <td class="org-right">?</td> <td class="org-right">?</td> <td class="org-right">?</td> </tr>
<tr> <td class="org-left">?</td> <td class="org-right">B</td> <td class="org-right">d</td> <td class="org-right">D</td> <td class="org-right">F</td> </tr>
<tr> <td class="org-left">?</td> <td class="org-right">1</td> <td class="org-right">48</td> <td class="org-right">0</td> <td class="org-right">0</td> </tr> </tbody> </table>
"PCI:B@d:D:F" "PCI:1@48:0:0"
joshua@dobby.lan:~/ $ cat /etc/X11/xorg.conf.d/21-gpu-driver.conf# AST2500 Section "Device" Identifier "GPU0" Driver "modesetting" BusID "PCI:2@5:0:0" VendorName "ASpeed Corporation" EndSection # WX7100 Section "Device" Identifier "GPU1" Driver "modesetting" # or amdgpu if you have xf86-video-amdgpu installed BusID "PCI:1@48:0:0" VendorName "AMD Corporation" EndSection # this is absolutely necessary, it tells xorg which GPU to use for the screen Section "Screen" Identifier "Screen0" Device "GPU0" EndSectionNO upgrade openBMC bios/firmware and disable onboard GPU via
luke-jr says that the latest BMC v 2.00 is buggy.
ON-BOARD VGA DISABLE JUMPER
See the raptor pdf user's guide: for details
I believe that we need to update the firmware in order to do this:
The current firmware has a web gui apparently, which is pretty cool!
I should be able to connect to the BMC firmware via ssh, when the machine has power, but is not currently running an OS. First find the machine's IP address:
find the ip address
joshua@dobby.lan:~/ $ ip address1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enP4p1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 2c:09:4d:00:08:9e brd ff:ff:ff:ff:ff:ff inet 192.168.1.60/24 brd 192.168.1.255 scope global dynamic noprefixroute enP4p1s0f0 valid_lft 82733sec preferred_lft 71933sec inet6 fe80::7596:9965:a3f3:a1a5/64 scope link valid_lft forever preferred_lft forever 3: enP4p1s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 2c:09:4d:00:08:9f brd ff:ff:ff:ff:ff:ff 4: wlP51p1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether e0:06:e6:72:03:91 brd ff:ff:ff:ff:ff:ffIt appears that the
2:is the one that is actually working, so I used that ip address:ssh root@192.168.1.60default BMC password
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup> <col class="org-left" />
<col class="org-left" /> </colgroup> <tbody> <tr> <td class="org-left">username</td> <td class="org-left">password</td> </tr>
<tr> <td class="org-left">root</td> <td class="org-left">OpenBmc</td> </tr> </tbody> </table>
In order to update to openbmc v2, I need to first ensure that the firmware is at version Ensure that the BMC and PNOR was previously updated to System Package v1.06, and that that your system successfully boots after that update. Detailed upgrade instructions can be found on the wiki.
The wiki shows that there are 3 upgradeable things:
- BMC
- PNOR
- FPGA
marcus<sub>c</sub> from irc in #talos-workstation seems to think that you do not need to upgrade the FPGA. He has never updated his. He also thinks that the PNOR does not really need to be updated either.
troubleshooting BMC connection guide
does the BMC even have an IP address?
switch to wayland
X has issues when you have two GPUs. Wayland doesn't care.
Where to find X logs
var/log/gdm/greeter.log /var/lib/gdm.local/share/xorg/Xorg.1.log
toggling gdm to use X/wayland
This does not appear to work.
joshua@dobby.lan:~/ $ cat /etc/gdm/custom.conf | grep 'Wayland'
#WaylandEnable=false
WaylandEnable=trueDONE install icewm, and put that in ~/.xinitrc & startx
This worked! I can run startx on tty2!
q66's advice
DONE enable syslog-ng service
DONE make sure logind and dbus are started.
dinitctl listDONE start gdm and the read through /var/log/messages and /var/log/auth.log
The old hack to start wayland upon console login.
joshua@dobby.lan:~/ $ cat ~/.profile
#!/usr/bin/bash
export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
if [[ -z "${DISPLAY}" && "${XDG_VTNR}" == 4 ]]; then
gnome-shell --wayland
fiDONE get chimera to wake up after a period of inactivity
DONE Try a new AMD graphics card
This experiment failed. We are using the new AMD graphics card, and the raptor still becomes upresponsive after a while. What else can I try?
q66 seemed to think that the old AMD graphics card that we used was faulty. Specifically this AMD card: [AMD/ATI] Ellesmere [Radeon Pro WX 7100]. q66 (leader of chimera linux), said that when he used this GPU, he would have random kernel panics. So he does not use that GPU anymore.
To fix this problem I did this:
mv /etc/X11/xorg.conf.d/21-gpu-driver.conf ~/
Then we replaced the bad AMD graphics card with an AMD W5700. I had expected us to get stuck at the console during boot. But we did not. GDM started just fine!
Follow the below wiki guide to tell X to use the AMD graphics card and ignore the onboard one.
All power9 machines have trouble running X, when a discrete GPU is installed. click here to read more on the raptor wiki.
On <span class="timestamp-wrapper"><span class="timestamp">[2023-09-20 Wed]</span></span>, we swapped out the old faulty GPU.
According to the archlinux wiki and abby from #chimera-linux, there are only two linux graphics drivers that we can use:
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup> <col class="org-left" />
<col class="org-left" /> </colgroup> <thead> <tr> <th scope="col" class="org-left">open source</th> <th scope="col" class="org-left">proprietary</th> </tr> </thead> <tbody> <tr> <td class="org-left">amdgpu</td> <td class="org-left">amdgpu Pro</td> </tr> </tbody> </table>
using butcoin knots
DONE build bitcoin knots from source
Bitcoin knots' github repo has good info
The github repo has lots of good information to help me out: https://bitcoinknots.org/#download
https://github.com/bitcoinknots/bitcoin
https://github.com/bitcoinknots/bitcoin/tree/23.x-knots/doc
https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/doc/build-unix.md https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/doc/build-freebsd.md https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/doc/dependencies.md
https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/contrib/guix/README.md
DONE I built bitcoin knots unreproducibly and created a service for it
https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/doc/build-unix.md https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/doc/build-freebsd.md
Clone the bitcoin knots repo:
joshua@dobby.lan:~/ $ cd ~/prog/ joshua@dobby.lan:~/ $ git clone --recursive https://github.com/bitcoinknots/bitcoinjoshua@dobby.lan:~/ $ doas apk add libevent-devel # and other dependencies joshua@dobby.lan:~/ $ ./configure joshua@dobby.lan:~/ $ gmake joshua@dobby.lan:~/ $ gmake installCreate this service file:
joshua@dobby.lan:~/ $ cat ~/.config/dinit.d/bitcoind# bitcoind service type = process command = /home/jeff/prog/bitcoin/src/bitcoind -datadir=/home/jeff/.bitcoin/ -debuglogfile=/home/jeff/.bitcoin/debug.log # uncomment this next line once you know this works after = network.targetAnd start and enable the service
joshua@dobby.lan:~/ $ dinitctl start bitcoind joshua@dobby.lan:~/ $ dinitctl enable bitcoindI did modify the
/etc/fstabfile so that we could mount a largebtrfsfilesystem on~/.bitcointo house the bitcoin blockchain data.A power9 machine cannot reproducibly build bitcoin-knots
The bitcoin lead developer told me that he reproducibly builds bitcoin-knots via the $bitcoin-knots-src/contrib/guix/guix-build script on x86<sub>64</sub>. No other ISA can reproducibly build knots.
https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/contrib/guix/README.md
joshua@dobby.lan:~/ $ env HOSTS='powerpc64le-linux-gnu' ./contrib/guix/guix-buildbuild of /gnu/store/s3kkx373sacigy2zpfayhcvhavk4nrcf-glibc-73886db6218e613bd6d4edf529f11e008a6c2fa6-checkout.drv failed View build log at '/var/log/guix/drvs/s3/kkx373sacigy2zpfayhcvhavk4nrcf-glibc-73886db6218e613bd6d4edf529f11e008a6c2fa6-checkout.drv.gz'. killing process 7831 cannot build derivation `/gnu/store/903x2jilmjgpznh7sxrlf5w1d0yfw0jn-glibc-73886db6218e613bd6d4edf529f11e008a6c2fa6-checkout.drv': 1 dependencies couldn't be built applying 1 graft for imagemagick-6.9.12-4 ..../configure gmake && gmake check && gmake installguix system (on power9) cannot build bitcoin-core via guix
guix build --with-input=llvm=llvm@19.1.7 bitcoin-core?> failedguix build --with-input=llvm=llvm@18.1.8 bitcoin-core?> failedguix build --with-input=llvm=llvm@17.0.6 bitcoin-core?> failedguix build --with-input=llvm=llvm@16.0.6 bitcoin-coreguix build --with-input=llvm=llvm@15.0.7 bitcoin-coreguix build --with-input=llvm=llvm@14.0.6 bitcoin-coreguix build --with-input=llvm=llvm@13.0.1 bitcoin-coreThis is probably related to the fact that the bitcoin knots lead developer does not support reproducibly build of bitcoin knots on power9.
q66 won't let me package bitcoin-knots-qt for chimera
q66 (lead developer of Chimera Linux) is NOT ok with me packagine qt5 for chimera linux. He is going to package qt6 instead. And he is not ok with me packaging bitcoin-knots either.
This is the documentation for packaging in chimera.
https://github.com/chimera-linux/cports https://github.com/chimera-linux/chimerautils
I can package bitcoin knots for guix, but it won't build on power9
bitcoin-knots may be packaged for guix! https://codeberg.org/guix/guix/pulls/714
joshua@dobby.lan:~/ $ lsblk
guix on chimera linux. And guix already has qt packaged. Do they have 5.15.2 packaged?
Guix has qt5compat, which are some libraries that allow you to run Qt5 applications on Qt6.
They also have qtbase version 5.15.8.
flatpak has bitcoin-knots, but not for power9
https://github.com/flathub/org.bitcoincore.bitcoin-qt https://flathub.org/apps/org.bitcoincore.bitcoin-qt
NO install bitcoin-core from guix and run that
Apparently bitcoin-core allows spam on the blockchain. This seems fairly stupid. It's probably better to use bitcoin-knots.
Install a custom chimera package
https://github.com/chimera-linux/cports/pullslinux/cports/pulls
At one point Chimera did not package gnupg. I had to manually install gpg, but Chimera now packages gpg. This is reference documentation.
First let's add the the eater's gpg package:
joshua@dobby.lan:~/ $ git remote add the-eater https://github.com/the-eater/cports
joshua@dobby.lan:~/ $ git fetch the-eater
#+begin<sub>example</sub>: remote: Enumerating objects: 314, done. remote: Counting objects: 100% (184/184), done. remote: Compressing objects: 100% (68/68), done. remote: Total 314 (delta 102), reused 167 (delta 94), pack-reused 130 Receiving objects: 100% (314/314), 63.49 KiB | 1.44 MiB/s, done. Resolving deltas: 100% (103/103), completed with 14 local objects. From https://github.com/the-eater/cports
- [new branch] cbuild/show-symlink-source -> the-eater/cbuild/show-symlink-source
- [new branch] master -> the-eater/master
- [new branch] pkg/gcompat/new -> the-eater/pkg/gcompat/new
- [new branch] pkg/libfuse2/new -> the-eater/pkg/libfuse2/new
- [new branch] pkg/weechat/3.8 -> the-eater/pkg/weechat/3.8
- [new branch] pkg/xwayland/patch/allow-overflow -> the-eater/pkg/xwayland/patch/allow-overflow
- [new branch] pkg/yt-dlp/2023.02.17 -> the-eater/pkg/yt-dlp/2023.02.17
- [new branch] pkgbulk/flatpak/new -> the-eater/pkgbulk/flatpak/new
- [new branch] pkgbulk/gfxtools/new -> the-eater/pkgbulk/gfxtools/new
- [new branch] pkgbulk/gpg/new -> the-eater/pkgbulk/gpg/new
- [new branch] pkgbulk/intel-stack/new -> the-eater/pkgbulk/intel-stack/new
- [new branch] pkgbulk/qemu -> the-eater/pkgbulk/qemu
#+end<sub>example</sub>
It looks like the gpg package is located in branch "pkgbulk/gpg/new". What is that branch name?
joshua@dobby.lan:~/ $ git branch -r
EXPORT EDITOR=nano
git merge the-eater/pkg/gpg/new
./cbuild pkg contrib/gnupg
configure: WARNING:
It seems that you are not using GNU make. Some make tools have serious
flaws and you may not be able to build this software at all. Before you
complain, please try GNU make: GNU make is easy to build and available
at all GNU archives. It is always available from ftp.gnu.org:/gnu/make.
bmake: stopped in /builddir/gnupg-2.4.0/build
=> A failure has occurred!
Traceback (most recent call last):
File "/home/jeff/prog/chimera/cports/src/runner.py", line 1359, in fire
case "check" | "install" | "pkg": do_pkg(cmd)
^^^^^^^^^^^
File "/home/jeff/prog/chimera/cports/src/runner.py", line 1066, in do_pkg
build.build(
File "/home/jeff/prog/chimera/cports/src/cbuild/core/build.py", line 111, in build
buildm.invoke(pkg, step)
File "/home/jeff/prog/chimera/cports/src/cbuild/step/build.py", line 14, in invoke
pkg.run_step("build", optional = True)
File "/home/jeff/prog/chimera/cports/src/cbuild/core/template.py", line 1069, in run_step
if not run_pkg_func(self, "do_" + stepn) and not optional:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jeff/prog/chimera/cports/src/cbuild/core/template.py", line 165, in run_pkg_func
func(pkg)
File "/home/jeff/prog/chimera/cports/src/cbuild/build_style/gnu_configure.py", line 8, in do_build
self.make.build()
File "/home/jeff/prog/chimera/cports/src/cbuild/util/make.py", line 80, in build
return self._invoke(
^^^^^^^^^^^^^
File "/home/jeff/prog/chimera/cports/src/cbuild/util/make.py", line 63, in _invoke
return self.template.do(
^^^^^^^^^^^^^^^^^
File "/home/jeff/prog/chimera/cports/src/cbuild/core/template.py", line 1049, in do
return chroot.enter(
^^^^^^^^^^^^^
File "/home/jeff/prog/chimera/cports/src/cbuild/core/chroot.py", line 633, in enter
return subprocess.run(
^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/subprocess.py", line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['bwrap', '--unshare-all', '--hostname', 'cbuild', '--ro-bind', PosixPath('/home/jeff/prog/chimera/cports/bldroot'), '/', '--bind', PosixPath('/home/jeff/prog/chimera/cports/bldroot/builddir'), '/builddir', '--ro-bind', PosixPath('/home/jeff/prog/chimera/cports/bldroot/destdir'), '/destdir', '--ro-bind', PosixPath('/home/jeff/prog/chimera/cports/sources'), '/sources', '--dev', '/dev', '--proc', '/proc', '--tmpfs', '/tmp', '--tmpfs', '/var/tmp', '--new-session', '--die-with-parent', '--bind', PosixPath('/home/jeff/prog/chimera/cports/cbuild_cache'), '/cbuild_cache', '--uid', '1337', '--gid', '1337', '--chdir', PosixPath('/builddir/gnupg-2.4.0/build'), '--ro-bind-data', '5', '/tmp/cbuild-lld-args', 'linux64', '--', 'bmake', '-j64']' returned non-zero exit status 2.I had to make some minor changes to the template.py based on suggestions from q66:
Add gmake to hostmakedepends and add make<sub>cmd</sub> = "gmake"
q66 says that I need to add a local repository.
[15:05] <q66> you add your local repo to repositories and install your packages [15:23] <newChimeraUser> ok. I think that is with apk. don't tell me the answer?I will try to figure it out. [15:25] <newChimeraUser> I think I need to edit etc/apk/repositories.d [15:25] <newChimeraUser> I will go ahead and create a repo on notabug and go from there. [15:29] <newChimeraUser> ok?I'm not certain how to add a local repository. [15:52] <q66> uh, it's just a path [15:53] <q66> /path/to/cports/packages/main [15:53] <q66> /path/to/cports/packages/contrib [15:56] <newChimeraUser> ok. thanks
joshua@dobby.lan:~/ $ cat /etc/apk/repositories.d/02-local-repo-for-gpg.list
#+RESULTS
/home/jeff/prog/chimera/cports/packages/contribNow I can install gpg via:
doas apk add --allow-untrusted gnupg
guix stuff
installing guix on chimera linux
You can install guix via these commands:
joshua@dobby.lan:~/ $ wget https://guix.gnu.org/install.sh
joshua@dobby.lan:~/ $ doas chmod u+x guix-install.sh
joshua@dobby.lan:~/ $ doas ./guix-install.sh
Now we need to start the guix-daemon on boot. Chimera uses dinit as their service manager.
Write this file:
joshua@dobby.lan:~/ $ cat /etc/dinit.d/guix-daemon
# guix-daemon service
type = process
# run this command as root
run-as = root
command = /root/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild
# uncomment this next line once you know this works
after = network.targetThen enable and start the guix daemon:
# dinitctl enable guix-daemon
# dinitctl start guix-daemon
joshua@dobby.lan:~/ $ guix pull
joshua@dobby.lan:~/ $ # update the guix daemon; the next two lines should run at least once a month
joshua@dobby.lan:~/ $ doas -s
joshua@dobby.lan:~/ $ guix pull
joshua@dobby.lan:~/ $ # authorize substitute servers
joshua@dobby.lan:~/ $ # cd ~/prog/gnu/guix/guix-src/etc/substitutes
joshua@dobby.lan:~/ $ # guix archive --authorize < ci.guix.gnu.org.pub
joshua@dobby.lan:~/ $ # guix archive --authorize < bordeaux.guix.gnu.org.pub
joshua@dobby.lan:~/ $ # read this page for application set up:
joshua@dobby.lan:~/ $ # https://guix.gnu.org/manual/en/html_node/Application-Setup.html
joshua@dobby.lan:~/ $ guix install glibc-locales
joshua@dobby.lan:~/ $ guix install fontconfig
joshua@dobby.lan:~/ $ fc-cache -rv
joshua@dobby.lan:~/ $ guix install nss-certs
Add in the export line so I can use the guix binaries.
joshua@dobby.lan:~/ $ cat ~/.profile
#!/usr/bin/bash
export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
GUIX_PROFILE="/home/jeff/.guix-profile"
. "$GUIX_PROFILE/etc/profile"
export GUIX_PROFILESet up cronie to weekly run $guix pull and # guix pull. This is essential. If one fails to regularly run those commands, then it can be really hard to update guix.
joshua@dobby.lan:~/ $ # apk add cronie
joshua@dobby.lan:~/ $ # dinitctl enable crond
joshua@dobby.lan:~/ $ # dinitctl start cron
joshua@dobby.lan:~/ $ $ crontab -e # this will open vim. write this: 0 0 * * 2 guix pull
joshua@dobby.lan:~/ $ $ doas crontab -e #this open up vim...write this: @weekly guix pull
Let's verify that my regular user will weekly run guix pull:
joshua@dobby.lan:~/ $ crontab -l
0 3 * * * guix pullLet's double check that root will weekly run guix pull.
joshua@dobby.lan:~/ $ doas crontab -u root -l
@weekly guix pullHow do I verify that these commands are successfully running?
doas /var/log/cron.log
Apparently I can set up msmtp as the system sendmail, and tell crontab to email me the output of each job.
Uninstalling guix on chimera linux
Sometimes guix gets stuck updating itself and one can no longer update it. When this happens?delete guix and re-install
joshua@dobby.lan:~/ $ doas ./install.sh --uninstall
joshua@dobby.lan:~/ $ doas ./install.sh
How old is the guix daemon on chimera linux?
How would I go about finding that out?
joshua@dobby.lan:~/ $ doas -s
joshua@dobby.lan:~/ $ guix describe
Generation 9 Jul 10 2024 19:55:45 (current)
guix a1f8969
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: a1f89695560dca1ecedab131a33bb6c5f4584226starting the guix daemon manually
[1682531003.3N]: [ FAIL ] unsupported init system; run the daemon manually: ~root/.config/guix/current/bin/guix-daemon ?build-users-group=guixbuild
hint: Consider installing the `glibc-locales' package and defining `GUIX<sub>LOCPATH</sub>', along these lines:
set up guix daemon via dinit
I should add support for setting up the guix-daemon to dinit in install.sh
joshua@dobby.lan:~/ $ cat /etc/dinit.d/guix-daemon
# guix-daemon service
type = process
# run this command as root
run-as = root
command = /root/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild
# depends-on = bar
# waits-for = baz
# uncomment this next line once you know this works
after = network.target
# before = network.targetThis use this command to enable guix-daemon
doas dinitctl enable guix-daemon
https://davmac.org/projects/dinit/man-pages-html/dinitcheck.8.html
https://davmac.org/projects/dinit/man-pages-html/dinit-service.5.html
So if you cannot get the daemon to autostart, then this will
doas dinitctl start guix-daemon work.
packaging sparrow for guix
Tobias Alexandra Platen guix@platen-software.de has a Talos and uses guix. "Simon Josefsson" simon@josefsson.org has a Talos II and may be willing to let guix use it as a build server.
https://github.com/sparrowwallet/sparrow https://github.com/sparrowwallet/sparrow/blob/master/docs/reproducible.md Apparently I the easy way to run sparrow wallet is:
joshua@dobby.lan:~/ $ git clone --recursive https://github.com/sparrowwallet/sparrow.git
joshua@dobby.lan:~/ $ cd sparrow
joshua@dobby.lan:~/ $ guix shell --emulate-fhs openjdk
joshua@dobby.lan:~/ $ ./sparrow
BUT I cannot get openjdk to install at the moment.
guix build openjdk is failing.
Chimera has packaged openjdk21, but sparrow needs openjdk22. Chimera will only support the LTS versions of java. OpenJDK will be released in September of 2025. openjdk.org/projects/jdk/25
guix weather as of: <span class="timestamp-wrapper"><span class="timestamp">[2025-08-19 Tue]</span></span>
https://bordeaux.guix.gnu.org ??? 0.0% substitutes available (5 out of 29744) at least 25.8 MiB of nars (compressed) 298.6 MiB on disk (uncompressed) 0.018 seconds per request (540.8 seconds in total) 55.0 requests per second (continuous integration information unavailable) looking for 29744 store items on https://ci.guix.gnu.org?
Let's try to run the sparrow wallet binary
Sparrow wallet depends on openJDK22, which was just recently released in early September 2025. Chimera Linux will update to openJDK22 eventually (they have packaged java21), but that could in 1 - 5 months. Guix says that they have packaged openjdk22+, but they have not been built for Power9 (Perhaps java does not reproducibly build on power9 yet).
I can download pre-built java binaries here (that dynamically link to glibc): https://github.com/adoptium/temurin22-binaries/releases/tag/jdk-22.0.2%2B9
I verified the downloaded binary is good:
joshua@dobby.lan:~/prog/openJDK $ sha256sum OpenJDK22U-jdk_ppc64le_linux_hotspot_22.0.2_9.tar.gz
joshua@dobby.lan:~/prog/openJDK $ cat OpenJDK22U-jdk_ppc64le_linux_hotspot_22.0.2_9.tar.gz.sha256.txt
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup> <col class="org-left" />
<col class="org-left" /> </colgroup> <tbody> <tr> <td class="org-left">1d678752d58e33ff951e75736b8415d6d7ae136b2421ca02e993f2603e9b259b</td> <td class="org-left">OpenJDK22U-jdk<sub>ppc64le</sub><sub>linux</sub><sub>hotspot</sub><sub>22.0.2</sub><sub>9.tar.gz</sub></td> </tr>
<tr> <td class="org-left">1d678752d58e33ff951e75736b8415d6d7ae136b2421ca02e993f2603e9b259b</td> <td class="org-left">OpenJDK22U-jdk<sub>ppc64le</sub><sub>linux</sub><sub>hotspot</sub><sub>22.0.2</sub><sub>9.tar.gz</sub></td> </tr> </tbody> </table>
joshua@dobby.lan:~/ $ gpg --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B
joshua@dobby.lan:~/ $ gpg --verify OpenJDK22U-jdk_ppc64le_linux_hotspot_22.0.2_9.tar.gz.sig
gpg: key 843C48A565F8F04B: "Adoptium GPG Key (DEB/RPM Signing Key) <temurin-dev@eclipse.org>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
gpg: assuming signed data in 'OpenJDK22U-jdk_ppc64le_linux_hotspot_22.0.2_9.tar.gz'
gpg: Signature made Wed Jul 17 07:26:57 2024 EDT
gpg: using RSA key 3B04D753C9050D9A5D343F39843C48A565F8F04B
gpg: Good signature from "Adoptium GPG Key (DEB/RPM Signing Key) <temurin-dev@eclipse.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3B04 D753 C905 0D9A 5D34 3F39 843C 48A5 65F8 F04B
[ Babel evaluation exited with code 0 ]But running the java binary is giving me some grief:
joshua@dobby.lan:~/prog/openJDK $ ./java --version
exec: Failed to execute process './java': The file exists and is executable.
Check the interpreter or linker?The problem is that these binaries link to glibc, but I should be able to install glibc via guix.
joshua@dobby.lan:~/ $ guix install glibc
But yet I'm still having issues?running this binary file. Why?
joshua@dobby.lan:~/prog/openJDK $ ./java --version
exec: Failed to execute process './java': The file exists and is executable.
Check the interpreter or linker?Guix is still giving me this hint about setting necessary environmental variables. Maybe that is the problem.
joshua@dobby.lan:~/ $ guix install rsync
hint: Consider setting the necessary environment variables by running:
GUIX_PROFILE="/home/jeff/.guix-profile"
. "$GUIX_PROFILE/etc/profile"
Alternately, see `guix package --search-paths -p
"/home/jeff/.guix-profile"'.According to an irc log
12:22:15 <gnucode2> I keep seeing guix giving me a hint after I install a package. (I'm using guix on Chimera linux).
12:22:26 <gnucode2> guix hint: Your paste can be seen here: <https://bpa.st/LFZQ>
12:22:40 <gnucode2> my ~/.profile: Your paste can be seen here: <https://bpa.st/ES7Q>
12:23:45 <Rutherther> gnucode2: if you install particular packages giving you new search paths, you're going to have to reload the profile. That's essential what it is telling you
12:25:23 <gnucode2> how does one go about "reloading the profile"? Open up a new terminal? logout … login ?
12:26:01 <Rutherther> exactly the way it is telling you in the hint. Yes, logging out and in is going to ensure it's everywhere and not just in the terminal session
12:26:42 <Rutherther> no, opening a new terminal is not going to do it. That's not a login shell, you would have to source it yourself, or open login shell yourself
12:28:02 <gnucode2> Rutherther: But didn't I set those necessary environmental variables in my ~/.profile ?
12:28:43 <Rutherther> gnucode2: no, ~/.profile is sourced on login. New env vars have been added in the meantime so you couldn't have sourced them
12:30:24 <gnucode2> Rutherther: is there a way to automatically add these new environmental variables after I install new packages (I'm using guix on a foreign distro)? So that I don't have to think about it? I'm guessing the answer is…no.
12:30:58 <Rutherther> gnucode2: no, Linux doesn't have a general support for changing environment of other running processes
12:31:39 <gnucode2> gotcha…so you're saying I should use the Hurd ? I actually don't know if it supports changing environmental varables of other running processes…
12:31:43 <gnucode2> :)
12:31:58 <Rutherther> gnucode2: I don't know a single thing about Hurd, but I would doubt Hurd supports this
When guix installs new packages, guix sometimes has to set up new environmental variables to ensure packages work correctly. However, Linux does not support changing the environmental variables of all running processes. So essentially, if you see this error message and your newly installed packages run funny, just logout and login again.
Let's try to build openjdk22 from source
joshua@dobby.lan:~/prog/openJDK $ bash; ./configure 2>&1
joshua@dobby.lan:~/prog/openJDK $ #`bash configure 2>&1`
/bin/sh: ./configure: Permission deniedLet's compile OpenJDK 22, which is what sparrow wallet needs.
joshua@dobby.lan:~/ $ git reset --hard 6d9a50ea148c1c37b9a1d0475d4aae78ea8f822b
joshua@dobby.lan:~/ $ git reset --hard 53084107246aaa3eb997426e0f52abc44b8f5584
joshua@dobby.lan:~/ $ doas chmod u+x configure
joshua@dobby.lan:~/ $ mkdir build-dir
joshua@dobby.lan:~/ $ cd build-dir
joshua@dobby.lan:~/ $ ../configure # this failed a few times...I had to add dependencies:
joshua@dobby.lan:~/ $ doas apk add fontconfig-devel cups-devel pipewire-alsa alsa-utils \
alsa-lib-devel gcc libxtst-devel libxt-devel libxrender-devel \
libxrandr-devel
joshua@dobby.lan:~/ $ # I want to specify that I am trying to compile ppc64le
joshua@dobby.lan:~/ $ # but this is ignored by configure
joshua@dobby.lan:~/ $ # ../configure CFLAGS="-mcpu=powerpc -mlittle-endian"
joshua@dobby.lan:~/ $ ../configure
joshua@dobby.lan:~/ $ # it seems like warnings are getting treated as errors:
joshua@dobby.lan:~/ $ ../configure --with-extra-cflags="-Wno-error" \
--with-extra-cxxflags="-Wno-error"
joshua@dobby.lan:~/ $ make images