Gnu Hurd on Guix

It is a simple process to build a Hurd vm from Guix:

christopher@nightshade ~/Scratch$ guix build -S guix
christopher@nightshade ~/Scratch$ guix build -f /gnu/store/f8qhkr6lzzmw7a5v44nqvbi1gg8cyh85-guix-1.1.0-4.bdc801e-checkout/gnu/system/hurd.scm
christopher@nightshade ~/Scratch$ cp /gnu/store/4l65yggpi0v6y9pi8q7aij17zx28wyzp-qemu-image ~/Scratch/
christopher@nightshade ~/Scratch$ sudo qemu-system-i386 -enable-kvm -m 512 -snapshot -hda 4l65yggpi0v6y9pi8q7aij17zx28wyzp-qemu-image

The VM from this config does not have guix (package manager) installed, so it is somewhat limited what you could do with it. (I think there is a fancier version in a Guix development branch somewhere.) But guile scheme is installed already!

From what I understand, before Guix, Debian was the only distro that had made a Gnu Hurd system practical. But Guix is making rapid progress. I believe the benefits of Guix development investment in Hurd will be more enduring also, due to the functional nature of the Guix package management system.

For the “official” Guix plans to deprecate Linux kernel support, see the following link:

Updated Guix package for HackRF

Am attempting to upload the revised package definition at, but haven’t seen it show up yet. So here is the package definition (added to gnu/packages/radio.scm):

(define-public hackrf
  ;; Using a git commit because there have been many many commits
  ;; since the relase two years ago, but no sign of a promised
  ;; release for many months now.
  (let ((commit "43e6f99fe8543094d18ff3a6550ed2066c398862")
        (revision "0"))
     (name "hackrf")
     (version (git-version "2018.01.1" revision commit))
      (origin (method git-fetch)
	      (uri (git-reference
		    (url "")
		    (commit commit)))
	      (file-name (git-file-name name version))
	       (base32 "0avnv693xi0zsnrvkbfn0ln1r3s1iyj0bz7sc3gxay909av0pvbc"))))
     (build-system cmake-build-system)
        (list "-DUDEV_RULES_GROUP=dialout"
	      (string-append "-DUDEV_RULES_PATH="
                             (assoc-ref %outputs "out")
	(modify-phases %standard-phases
	  (add-before 'configure 'enter-source-directory
		      (lambda _ (chdir "host") #t))
	  (add-before 'install-license-files 'leave-source-directory
		      (lambda _ (chdir "..") #t)))
        #:tests? #f))                  ; no test suite
      `(("pkg-config" ,pkg-config)))
      `(("fftw" ,fftw)
        ("fftwf" ,fftwf)
	("libusb" ,libusb)))
     (home-page "")
     (synopsis "User-space library and utilities for HackRF SDR")
      "Command line utilities and a C library for controlling the HackRF
Software Defined Radio (SDR) over USB.  Installing this package installs
the userspace hackrf utilities and C library.  To install the hackrf
udev rules, you must add this package as a system service via
modify-services.  E.g.:

  (udev-service-type config =>
   (udev-configuration (inherit config)
    (rules (cons hackrf
            (udev-configuration-rules config)))))))
@end lisp")
     (license license:gpl2))))

TiEmu Guix Package Definition

I submitted a package definition for TiEmu, a Ti calculator emulator:

My build mysteriously is not able to load the ROMs that ship with it, but I was able to load pedrom fine from the original pedrom archive.

zs program running on pedrom on emulated TI-92

It should be fun to explorer different programs that can be run on pedrom. Mathematical programs will in principle be of the greatest interest, but I must say it is fun to be able to run pacman on a TI-89 :)

P.S. If any of my friends want to give me any TI calculators they aren’t using, I might be able to have some fun with those. I’m thinking TI-84 or fancier.

Libticonv Guix Package Definition

(define-public libticonv
    (name "libticonv")
    (version "1.1.5")
    (source (origin
              (method url-fetch)
              (uri "")
    (build-system gnu-build-system)
     ;; build fails with out --enable-iconv (...?)
     `(#:configure-flags (list "--enable-iconv")
       (modify-phases %standard-phases
         (replace 'unpack
           (lambda* (#:key source #:allow-other-keys)
             (invoke "tar" "xvkf" source)
             (invoke "tar" "xvkf"
                     (string-append "tilibs2/libticonv-"
                                    ,version ".tar.bz2"))
             (chdir (string-append "libticonv-" ,version))
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("libtool" ,libtool)
       ("pkg-config" ,pkg-config)))
     `(("glib" ,glib)))
    (synopsis "Character conversion library for TI calculators:
A part of the TiLP project")
     "This project aims to develop a multi-platform linking program for
use with all TI graphing calculators (TI73 to V200PLT).")
    (home-page "")
    (license license:gpl2+)))