aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu system hurd)
  #:use-module (guix gexp)
  #:use-module (guix profiles)
  #:use-module (guix utils)
  #:use-module (gnu bootloader)
  #:use-module (gnu bootloader grub)
  #:use-module (gnu packages admin)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages certs)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages cross-base)
  #:use-module (gnu packages file)
  #:use-module (gnu packages gawk)
  #:use-module (gnu packages guile)
  #:use-module (gnu packages guile-xyz)
  #:use-module (gnu packages hurd)
  #:use-module (gnu packages less)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages texinfo)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu services hurd)
  #:use-module (gnu services shepherd)
  #:use-module (gnu system)
  #:use-module (gnu system setuid)
  #:use-module (gnu system shadow)
  #:use-module (gnu system vm)
  #:export (%base-packages/hurd
            %base-services/hurd
            %hurd-default-operating-system
            %hurd-default-operating-system-kernel
            %setuid-programs/hurd))

;;; Commentary:
;;;
;;; This module provides system-specifics for the GNU/Hurd operating system
;;; and virtual machine.
;;;
;;; Code:

(define %hurd-default-operating-system-kernel
  (if (system-hurd?)
      gnumach
      ;; A cross-built GNUmach does not work
      (with-parameters ((%current-system "i686-linux")
                        (%current-target-system #f))
        gnumach)))

(define %base-packages/hurd
  ;; Note: the Shepherd comes before the Hurd, not just because its duty is to
  ;; shepherd the herd, but also because we want its 'halt' and 'reboot'
  ;; commands to take precedence.
  (list shepherd-0.10 hurd netdde bash coreutils file findutils grep sed
        diffutils patch gawk tar gzip bzip2 xz lzip
        guile-3.0-latest guile-colorized guile-readline
        net-base nss-certs inetutils less procps shadow sudo which
        info-reader))

(define %base-services/hurd
  (append (list (service hurd-console-service-type
                         (hurd-console-configuration (hurd hurd)))
                (service static-networking-service-type
                         (list %loopback-static-networking

                               ;; QEMU user-mode networking.  To get "eth0", you need
                               ;; QEMU to emulate a device for which Mach has an
                               ;; in-kernel driver, for instance with:
                               ;; --device rtl8139,netdev=net0 --netdev user,id=net0
                               %qemu-static-networking))
                (service guix-service-type
                         (guix-configuration
                          (extra-options '("--disable-chroot"
                                           "--disable-deduplication"))))
                (service special-files-service-type
                         `(("/bin/sh" ,(file-append bash "/bin/sh"))
                           ("/usr/bin/env" ,(file-append coreutils
                                                         "/bin/env"))))
                (service syslog-service-type))
          (map (lambda (n)
                 (service hurd-getty-service-type
                          (hurd-getty-configuration
                           (tty (string-append "tty" (number->string n))))))
               (iota 6 1))))

(define %setuid-programs/hurd
  ;; Default set of setuid-root programs.
  (map file-like->setuid-program
       (list (file-append shadow "/bin/passwd")
             (file-append shadow "/bin/sg")
             (file-append shadow "/bin/su")
             (file-append shadow "/bin/newgrp")
             (file-append shadow "/bin/newuidmap")
             (file-append shadow "/bin/newgidmap")
             (file-append sudo "/bin/sudo")
             (file-append sudo "/bin/sudoedit"))))

(define %hurd-default-operating-system
  (operating-system
    (kernel %hurd-default-operating-system-kernel)
    (kernel-arguments '())
    (hurd hurd)
    (bootloader (bootloader-configuration
                 (bootloader grub-minimal-bootloader)
                 (targets '("/dev/vda"))))
    (initrd #f)
    (initrd-modules '())
    (firmware '())
    (host-name "guixygnu")
    (file-systems '())
    (packages %base-packages/hurd)
    (timezone "GNUrope")
    (locale-libcs (list glibc/hurd))
    (name-service-switch #f)
    (essential-services (hurd-default-essential-services this-operating-system))
    (privileged-programs '())
    (setuid-programs %setuid-programs/hurd)))
/mail.scm (public-inbox): Likewise. * gnu/packages/maths.scm (hdf-java): Likewise. (maxima): Likewise. (frama-c): Likewise. * gnu/packages/messaging.scm (libgadu): Likewise. * gnu/packages/music.scm (denemo): Likewise. (curseradio): Likewise. * gnu/packages/netpbm.scm (netpbm): Likewise. * gnu/packages/networking.scm (blueman): Likewise. (squid): Likewise. (aircrack-ng): Likewise. * gnu/packages/node.scm (node): Likewise. (node-llparse-frontend-bootstrap): Likewise. (node-llparse-bootstrap): Likewise. (llhttp-bootstrap): Likewise. (node-lts): Likewise. * gnu/packages/ocaml.scm (ocaml-4.11): Likewise. (opam): Likewise. (ocaml-graph): Likewise. * gnu/packages/orpheus.scm (orpheus): Likewise. * gnu/packages/password-utils.scm (password-store): Likewise. * gnu/packages/python.scm (pypy3): Likewise. * gnu/packages/qt.scm (qt5ct): Likewise. * gnu/packages/radio.scm (libosmo-dsp): Likewise. * gnu/packages/ruby.scm (ruby-pandoc-ruby): Likewise. * gnu/packages/rust.scm (rust-1.30): Likewise. * gnu/packages/screen.scm (byobu): Likewise. * gnu/packages/statistics.scm (r-with-tests): Likewise. * gnu/packages/suckless.scm (surf): Likewise. * gnu/packages/syndication.scm (gfeeds): Likewise. * gnu/packages/telephony.scm (mumble): Likewise. * gnu/packages/terminals.scm (alacritty): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/packages/uml.scm (plantuml): Likewise. * gnu/packages/version-control.scm (python-git-multimail): Likewise. (gitolite): Likewise. (hg-commitsigs): Likewise. (git-when-merged): Likewise. (git-imerge): Likewise. (gita): Likewise. * gnu/packages/video.scm (you-get): Likewise. * gnu/packages/vim.scm (eovim): Likewise. * gnu/packages/virtualization.scm (qemu): Likewise. (virt-manager): Likewise. (criu): Likewise. * gnu/packages/vpn.scm (strongswan): Likewise. (xl2tpd): Likewise. * gnu/packages/wm.scm (i3lock-fancy): Likewise. * gnu/packages/wxwidgets.scm (python-wxpython): Likewise. (python2-wxpython): Likewise. * gnu/packages/xdisorg.scm (autorandr): Likewise. * gnu/packages/xorg.scm (hackneyed-x11-cursors): Likewise. (v86d): Likewise. (mkfontdir): Likewise. (xpra): Likewise. Ludovic Courtès 2021-07-24gnu: Use 'search-input-file' when looking for *.so and *.a....* gnu/packages/bioinformatics.scm (sailfish)[arguments]: Use 'search-input-file' when looking for *.a and *.so. * gnu/packages/emulators.scm (dolphin-emu): Likewise. * gnu/packages/engineering.scm (lepton-eda): Likewise. (pcb): Likewise. * gnu/packages/golang.scm (go-1.4): Likewise. (go-1.14): Likewise. * gnu/packages/haskell.scm (ghc-7): Likewise. * gnu/packages/irods.scm (irods): Likewise. * gnu/packages/language.scm (python2-tegaki-pygtk): Likewise. * gnu/packages/lisp-xyz.scm (sbcl-lzlib): Likewise. (sbcl-cl-gobject-introspection): Likewise. (sbcl-cl-ana): Likewise. (sbcl-cl-libuv): Likewise. (sbcl-cl-async): Likewise. (sbcl-mcclim): Likewise. (sbcl-zstd): Likewise. (sbcl-cl-opengl): Likewise. (sbcl-lev): Likewise. (sbcl-cl-glfw3): Likewise. * gnu/packages/machine-learning.scm (tensorflow): Likewise. * gnu/packages/messaging.scm (utox): Likewise. * gnu/packages/mpi.scm (java-openmpi): Likewise. * gnu/packages/music.scm (jack-select): Likewise. * gnu/packages/pascal.scm (fpc): Likewise. * gnu/packages/python-crypto.scm (python-libnacl): Likewise. * gnu/packages/python-xyz.scm (python-cairocffi): Likewise. (python-pyev): Likewise. (python-pytidylib): Likewise. * gnu/packages/radio.scm (unixcw): Likewise. * gnu/packages/rust.scm (rust-1.32): Likewise. * gnu/packages/security-token.scm (opensc): Likewise. (python-pyscard): Likewise. * gnu/packages/selinux.scm (python-setools): Likewise. * gnu/packages/spice.scm (libcacard): Likewise. * gnu/packages/telephony.scm (libtgvoip): Likewise. Ludovic Courtès 2021-07-24gnu: Use 'search-input-directory' when looking for C/C++ library headers....* gnu/packages/arcan.scm (arcan)[arguments]: Use 'search-input-directory' for "include/libdrm" and "include/apr-1". * gnu/packages/bioinformatics.scm (sailfish): Likewise for jellyfish. * gnu/packages/boost.scm (boost-for-irods): Likewise for libcxx headers. * gnu/packages/cedille.scm (cedille): Likewise for IAL headers. * gnu/packages/compression.scm (snappy-with-clang6): Likewise for libcxx headers. * gnu/packages/cups.scm (hplip): Likewise for libusb headers. * gnu/packages/emulators.scm (pcsxr): Likewise for libcdio headers. * gnu/packages/game-development.scm (python2-renpy): Likewise for fribidi headers. * gnu/packages/games.scm (pokerth): Likewise for libircclient. * gnu/packages/guile-xyz.scm (guile-persist): Likewise for Guile. * gnu/packages/hurd.scm (hurd): Likewise for libtirpc. * gnu/packages/irods.scm (irods, irods-client-icommands): Likewise for libcxx, catch2, and nlohmann-json-cpp. * gnu/packages/julia.scm (julia): Use 'search-input-file' for libuv's errno.h. * gnu/packages/kde-pim.scm (kdepim-runtime): Use 'search-input-directory' for "include/KF5". (kmessagelib): Likewise. * gnu/packages/kde.scm (kdeconnect): Likewise. * gnu/packages/llvm.scm (clang-runtime-3.5): Likewise for libtirpc. * gnu/packages/mpi.scm (openmpi): Likewise for "include/infiniband". * gnu/packages/pumpio.scm (pumpa): Use 'search-input-file' for "tidy.h" and "aspell.h". * gnu/packages/radio.scm (dream): Use 'search-input-file' and 'search-input-directory' for pulseaudio, sndfile, etc. * gnu/packages/selinux.scm (policycoreutils): Likewise for PAM and libaudit. * gnu/packages/serialization.scm (avro-cpp-1.9-for-irods): Likewise for libcxx. * gnu/packages/sync.scm (nextcloud-client): Likewise for "include/KF5". * gnu/packages/video.scm (mkvtoolnix): Likewise for "include/gtest". (libopenshot): Likewise for "include/UnitTest++". * gnu/packages/virtualization.scm (criu): Likewise for libnl3 and for protobuf file. Ludovic Courtès 2021-07-18Merge branch 'master' into core-updatesLudovic Courtès 2021-07-12gnu: Add cc65....* gnu/packages/emulators.scm (cc65): New variable. Danny Milosavljevic 2021-07-12gnu: Add exomizer....* gnu/packages/emulators.scm (exomizer): New variable. Danny Milosavljevic 2021-07-02gnu: mame: Update to 0.233....* gnu/packages/emulators.scm (mame): Update to 0.233. Nicolas Goaziou 2021-06-27gnu: Add blastem....* gnu/packages/emulators.scm (blastem): New variable. Leo Prikler 2021-06-26gnu: dosbox-staging: Build with upstream's release options....* gnu/packages/emulators.scm (dosbox-staging)[arguments]: Produce a more optimised binary without run-time debugging overhead. Tobias Geerinckx-Rice 2021-06-25gnu: Add dosbox-staging....* gnu/packages/emulators.scm (dosbox-staging): New public variable. Tobias Geerinckx-Rice 2021-06-23Merge branch 'master' into core-updates...Conflicts: gnu/packages/cups.scm gnu/packages/python-web.scm gnu/packages/web.scm guix/build/maven/pom.scm Tobias Geerinckx-Rice 2021-06-22gnu: mednafen: Update to 1.27.1....* gnu/packages/emulators.scm (mednafen): Update to 1.27.1. [inputs]: Add flac. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Solene Rapenne via Guix-patches via 2021-06-19Merge branch 'master' into core-updates...Note: this merge actually changes the 'curl' and 'python-attrs' derivations, as part of solving caf4a7a2770ef4d05a6e18f40d602e51da749ddc and 12964df69a99de6190422c752fef65ef813f3b6b respectively. 4604d43c0e (gnu: gnutls@3.6.16: Fix cross-compilation.) was ignored because it cannot currently be tested. Conflicts: gnu/local.mk gnu/packages/aidc.scm gnu/packages/boost.scm gnu/packages/curl.scm gnu/packages/nettle.scm gnu/packages/networking.scm gnu/packages/python-xyz.scm gnu/packages/tls.scm Marius Bakke 2021-06-14gnu: Rename qtbase to qtbase-5....This change was automated via the following command: $ git ls-files | xargs sed -i 's/,qtbase)/,qtbase-5)/g' $ git ls-files | xargs sed -i 's/inherit qtbase)/inherit qtbase-5)/g' $ git ls-files | xargs sed -i 's/package-version qtbase)/package-version qtbase-5)/g' $ git checkout etc # to clear some spurious changes This is done so the qtbase package can be upgraded to version 6 in the following commit. Maxim Cournoyer 2021-06-08gnu: bsnes: Don't build native binaries....* gnu/packages/emulators.scm (bsnes)[arguments]: Add configure-flag to not build native binaries. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> nixo 2021-06-06Merge branch 'master' into core-updates... Conflicts: gnu/local.mk gnu/packages/algebra.scm gnu/packages/bioinformatics.scm gnu/packages/curl.scm gnu/packages/docbook.scm gnu/packages/emacs-xyz.scm gnu/packages/maths.scm gnu/packages/plotutils.scm gnu/packages/python-web.scm gnu/packages/python-xyz.scm gnu/packages/radio.scm gnu/packages/readline.scm gnu/packages/tls.scm gnu/packages/xml.scm gnu/packages/xorg.scm Marius Bakke 2021-06-06gnu: ppsspp: Update to 1.11.3-1.69fa207....This fixes the build with ffmpeg 4.4. * gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch: Rebase patch. * gnu/packages/emulators.scm (ppsspp): Update to 1.11.3-1.69fa207. [source]: Adjust origin snippet to unbundle the newly added zstd library. Maxim Cournoyer 2021-06-02gnu: retroarch: Update to 1.9.4....* gnu/packages/emulators.scm (retroarch): Update to 1.9.4. Tobias Geerinckx-Rice 2021-05-30gnu: mame: Update to 0.232....* gnu/packages/emulators.scm (mame): Update to 0.232. Nicolas Goaziou 2021-05-23gnu: retroarch: Update to 1.9.3....* gnu/packages/emulators.scm (retroarch): Update to 1.9.3. Tobias Geerinckx-Rice 2021-05-22Merge branch 'master' into core-updatesMarius Bakke 2021-05-21gnu: sameboy: Update to 0.14.3...* gnu/packages/emulators.scm (sameboy): Update to 0.14.3. [native-inputs]: Remove gcc-9. [arguments]: Use cc-for-target instead of hard-coding gcc. Felix Gruber 2021-05-09Merge branch 'master' into core-updates... Conflicts: gnu/local.mk gnu/packages/bioinformatics.scm gnu/packages/django.scm gnu/packages/gtk.scm gnu/packages/llvm.scm gnu/packages/python-web.scm gnu/packages/python.scm gnu/packages/tex.scm guix/build-system/asdf.scm guix/build/emacs-build-system.scm guix/profiles.scm Marius Bakke 2021-05-07gnu: mame: Fix build....* gnu/packages/emulators.scm (mame)[inputs]: Add missing pulseaudio input. Nicolas Goaziou 2021-05-07gnu: mame: Update to 0.231....* gnu/packages/emulators.scm (mame): Update to 0.231. Nicolas Goaziou 2021-05-01gnu: retroarch: Update to 1.9.2....* gnu/packages/emulators.scm (retroarch): Update to 1.9.2. [arguments]: Remove obsolete ‘--disable-git_version’ configure flag. Tobias Geerinckx-Rice 2021-04-26gnu: Add vice emulator...* gnu/packages/emulators.scm (vice): New variable. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Felipe Balbi 2021-04-22gnu: libretro-lowresnx: Update to 1.2....* gnu/packages/emulators.scm (libretro-lowresnx): Update to 1.2. 宋文武 2021-04-22gnu: retroarch: Update to 1.9.1....* gnu/packages/emulators.scm (retroarch): Update to 1.9.1. [arguments]: Add '--disable-git_version' to configure flags. 宋文武 2021-04-20gnu: mgba: Update to 0.9.1....* gnu/packages/emulators.scm (mgba): Update to 0.9.1. Tobias Geerinckx-Rice 2021-04-16Merge remote-tracking branch 'origin/master' into core-updates... Conflicts: gnu/local.mk gnu/packages/boost.scm gnu/packages/chez.scm gnu/packages/compression.scm gnu/packages/crates-io.scm gnu/packages/docbook.scm gnu/packages/engineering.scm gnu/packages/gcc.scm gnu/packages/gl.scm gnu/packages/gtk.scm gnu/packages/nettle.scm gnu/packages/python-check.scm gnu/packages/python-xyz.scm gnu/packages/radio.scm gnu/packages/rust.scm gnu/packages/sqlite.scm guix/build-system/node.scm Efraim Flashner