system: examples: Add devel-hurd.tmpl.

This operating system specification for the Hurd creates a system that
supports building the guix package from git natively.

Do something like

    ./pre-inst-env guix system build --target=i586-pc-gnu \
       gnu/system/examples/devel-hurd.tmpl

    ./pre-inst-env guix system image --image-type=hurd-qcow2 --image-size=15G \
       --no-offload gnu/system/examples/devel-hurd.tmpl

    cp /gnu/store/...disk-image devel.img

    guix shell qemu -- qemu-system-i386 -enable-kvm -m 4096 \
     -device rtl8139,netdev=net0                            \
     -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
     -hda devel-hurd.img

    ssh -p 10022 root@localhost
    GUIX_PROFILE=/run/current-system/bootstrap-profile
    source $GUIX_PROFILE/etc/profile
    mkdir -p ~/src/guix
    cd src/guix
    git clone git://git.savannah.gnu.org/guix
    cd guix
    ./bootstrap
    ./configure --with-courage
    make

* gnu/system/examples/devel-hurd.tmpl: New file.

Change-Id: I097c7c00a9ab9602db7f8f3305827c815f308d1e
This commit is contained in:
Janneke Nieuwenhuizen 2020-06-05 09:18:35 +02:00 committed by Jan (janneke) Nieuwenhuizen
parent f2cefd700d
commit 2390db7f46
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273

View file

@ -0,0 +1,106 @@
;; -*-scheme-*-
;; This is an operating system configuration template for a "bare bones
;; development" setup, with no X11 display server.
;; To build a disk image for a virtual machine, do
;;
;; ./pre-inst-env guix system image --image-type=hurd-qcow2 --image-size=6G \
;; --no-offload gnu/system/examples/devel-hurd.tmpl
;;
;; You may run it like so
;;
;; cp /gnu/store/.../disk-image devel-hurd.img
;; guix shell qemu -- qemu-system-i386 -enable-kvm -m 4096 \
;; -device rtl8139,netdev=net0 \
;; -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
;; -hda devel-hurd.img
;;
;; and use it like
;;
;; ssh -p 10022 root@localhost
;; guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'
;;
;; or even (if you use --image-size=3G)
;;
;; guix build hello
;;
;; Building Guix, do something like:
;;
;; GUIX_PROFILE=/run/current-system/bootstrap-profile
;; source $GUIX_PROFILE/etc/profile
;; mkdir -p ~/src/guix
;; cd src/guix
;; git clone https://git.savannah.gnu.org/git/guix.git master
;; cd master
;; ./bootstrap
;; ./configure --with-courage
;; make
(use-modules (srfi srfi-1)
(ice-9 match)
(gnu)
(gnu system hurd)
(gnu system locale)
(guix packages)
(guix store)
(guix utils))
(use-service-modules ssh virtualization)
(use-package-modules base compression file gawk gdb hurd less m4
package-management ssh version-control)
(define (input->package input)
"Return the INPUT as package, or #f."
(match input
((label (and (? package?) package))
package)
((label (and (? package?) package . output))
(cons package output))
(_ #f)))
(define guix-packages
(filter-map input->package
(fold alist-delete (package-direct-inputs guix)
;; These are not essential and do not build yet.
'("graphviz" "guile-avahi" "po4a"))))
(define %hurd-devel-os
(operating-system
(inherit %hurd-vm-operating-system)
(host-name "guixydevel")
(timezone "Europe/Berlin")
(file-systems (cons (file-system
(device (file-system-label "hurd"))
(mount-point "/")
(type "ext2"))
%base-file-systems))
(swap-devices (list (swap-space
(target "/swapfile"))))
(users (cons (user-account
(name "guix")
(group "users")
(supplementary-groups '("wheel")))
%base-user-accounts))
(packages (cons*
gdb-minimal
git-minimal
gnu-make
m4
openssh-sans-x
(append
guix-packages
%base-packages/hurd)))
(services (cons*
(modify-services (operating-system-user-services
%hurd-vm-operating-system)
(openssh-service-type
config =>
;; Set wide open
(openssh-configuration
(openssh openssh-sans-x)
(port-number 2222)
(permit-root-login #t)
(allow-empty-passwords? #t)
(password-authentication? #t))))))))
%hurd-devel-os