Setting up Chimera Revisited ? GNUcode.org

Setting up Chimera Revisited

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	0

DONE 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

  1. Tell GDM to ignore a GPU

    joshua@dobby.lan:~/ $ lspci | grep VGA
    
    0005: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-lts

  2. Xorg 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 VGA
    
    0005: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"
    EndSection
  3. NO 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:

    1. find the ip address

      joshua@dobby.lan:~/ $ ip address
      
      1: 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:ff

      It appears that the 2: is the one that is actually working, so I used that ip address:

      ssh root@192.168.1.60

    2. default 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.

    3. troubleshooting BMC connection guide

      does the BMC even have an IP address?

  4. 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=true

DONE install icewm, and put that in ~/.xinitrc & startx

This worked! I can run startx on tty2!

q66's advice

  1. DONE enable syslog-ng service

  2. DONE make sure logind and dbus are started.

    dinitctl list
    
  3. DONE 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
fi

DONE 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

  1. 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

  2. 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/bitcoin
    
    joshua@dobby.lan:~/ $ doas apk add libevent-devel # and other dependencies
    joshua@dobby.lan:~/ $ ./configure
    joshua@dobby.lan:~/ $ gmake
    joshua@dobby.lan:~/ $ gmake install
    

    Create 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.target

    And start and enable the service

    joshua@dobby.lan:~/ $ dinitctl start bitcoind
    joshua@dobby.lan:~/ $ dinitctl enable bitcoind
    

    I did modify the /etc/fstab file so that we could mount a large btrfs filesystem on ~/.bitcoin to house the bitcoin blockchain data.

  3. 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-build
    
    build 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 install

  4. guix system (on power9) cannot build bitcoin-core via guix

    guix build --with-input=llvm=llvm@19.1.7 bitcoin-core ?> failed guix build --with-input=llvm=llvm@18.1.8 bitcoin-core ?> failed guix build --with-input=llvm=llvm@17.0.6 bitcoin-core ?> failed guix build --with-input=llvm=llvm@16.0.6 bitcoin-core guix build --with-input=llvm=llvm@15.0.7 bitcoin-core guix build --with-input=llvm=llvm@14.0.6 bitcoin-core guix build --with-input=llvm=llvm@13.0.1 bitcoin-core

    This 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/contrib

Now 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.target

Then 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_PROFILE

Set 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 pull

Let's double check that root will weekly run guix pull.

joshua@dobby.lan:~/ $ doas crontab -u root -l
@weekly guix pull

How 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: a1f89695560dca1ecedab131a33bb6c5f4584226

starting 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.target

This 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 &#x2026; 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&#x2026;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&#x2026;so you're saying I should use the Hurd ?  I actually don't know if it supports changing environmental varables of other running processes&#x2026;
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 denied

Let'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