summary refs log tree commit diff
diff options
context:
space:
mode:
authorJanneke Nieuwenhuizen <janneke@gnu.org>2020-06-05 09:18:35 +0200
committerJanneke Nieuwenhuizen <janneke@gnu.org>2023-07-21 17:58:18 +0200
commit55037bb70621a6ea8b9f5b0d6129d34aa38a2f6f (patch)
tree33908799e3cb6fcf5a66d1c0c3d3d746bcd24cb4
parente4a1416c865500780875af4dc7f70fe1cee315ce (diff)
downloadguix-55037bb70621a6ea8b9f5b0d6129d34aa38a2f6f.tar.gz
DRAFT system: examples: Add devel-hurd.tmpl.
For your hacking pleasure -- Not intended for review / merge just yet.

Try something like

    ./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
    git clone git://git.savannah.gnu.org/guix
    cd guix
    ./bootstrap
    ./configure --localstatedir=/var --sysconfdir=/etc --with-courage
    make

Note that we don't have an ld-wrapper, so you need some ld.so and
LD_LIBRARY_PATH hackery for compiled binaries to run.
-rw-r--r--etc/substitutes/dezyne.org.pub6
-rw-r--r--gnu/system/examples/devel-hurd.tmpl103
2 files changed, 109 insertions, 0 deletions
diff --git a/etc/substitutes/dezyne.org.pub b/etc/substitutes/dezyne.org.pub
new file mode 100644
index 0000000000..2320d8828b
--- /dev/null
+++ b/etc/substitutes/dezyne.org.pub
@@ -0,0 +1,6 @@
+(public-key
+ (ecc
+  (curve Ed25519)
+  (q #32F730EA9AC64DD32D6BE661774ED3FF99D931027AD0115F1C5925C6CE724BA2#)
+ )
+)
diff --git a/gnu/system/examples/devel-hurd.tmpl b/gnu/system/examples/devel-hurd.tmpl
new file mode 100644
index 0000000000..49d2cb8b41
--- /dev/null
+++ b/gnu/system/examples/devel-hurd.tmpl
@@ -0,0 +1,103 @@
+;; -*-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
+;;
+;;     GUIX_PROFILE=/run/current-system/bootstrap-profile
+;;     source $GUIX_PROFILE/etc/profile
+;;     git clone git://git.savannah.gnu.org/guix
+;;     cd guix
+;;     ./bootstrap
+;;     ./configure --localstatedir=/var --sysconfdir=/etc --with-courage
+;;     make
+
+(use-modules (srfi srfi-1)
+             (ice-9 match)
+             (gnu)
+             (gnu system hurd)
+             (guix packages)
+             (guix store))
+(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)
+                    '("glibc-utf8-locales" "graphviz" "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
+               ;;(list guix "debug")
+               m4
+               openssh-sans-x
+               (append
+                guix-packages
+                %base-packages/hurd)))
+    (services (cons*
+               (modify-services (operating-system-user-services
+                                 %hurd-vm-operating-system)
+                 (guix-service-type
+                  config =>
+                  (guix-configuration
+                   (inherit config)
+                   (authorized-keys
+                    (cons
+                     (local-file "dezyne.org.pub")
+                     %default-authorized-guix-keys))
+                   (substitute-urls (cons "http://dezyne.org:8181"
+                                          %default-substitute-urls)))))))))
+
+%hurd-devel-os