Zerocat’s Coreboot-Machines  v0.13.1-86-gb85dc3e
How to create Zerocat Products like ZC-X200t, ZC-X230t, and others...
configuration.scm File Reference

GNU Guix System declaration template for Zerocat Machines. More...

Detailed Description

GNU Guix System declaration template for Zerocat Machines.

GNU Guix System Declaration

This configuration template should be applicable for all types of Zerocat Machines.

This file configures the Slim Display Manager to start an Xfce4 Session. It uses a Swap partition to store hibernation data, and passes resume=PARTUUID=xxxxxxxx-xx as an extra argument to the kernel linux-libre in order to make resume from hibernation work. The UUID and the PARTUUID of the swap area can be retrieved via sudo blkid. File systems are not encrypted.

Usage

Please adapt this template to your needs, i.e. provide the proper UUIDs for ‘file-systems’, check ‘swap-devices’ and ‘kernel-arguments’ and adapt UUID and PARTUUID to match your swap area, and carefully review settings for ‘user-account’ and ‘keyboard-layout’.

Then, on your GNU Guix System, type:

guix pull
sudo guix system reconfigure configuration.scm
sudo reboot

File Content

;;> @file
;;> @cond
;;

;; Zerocat Coreboot-Machines --- Create Zerocat Coreboot Images
;;
;; Copyright (C) 2021 Kai Mertens <kmx@posteo.net>
;;
;; The Zerocat Coreboot-Machines Project 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.
;;
;; The Zerocat Coreboot-Machines Project 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 this program.  If not, see <http://www.gnu.org/licenses/>.
;;
;; This file is part of the Zerocat Coreboot-Machines Project.
;;
;; Purpose:
;;   Configure your GNU Guix System on a Zerocat Machine, i.e.: ZC-X230t
;;
;; Usage:
;;   sudo guix system reconfigure <configuration-file>
;;
;; Note this is a template,
;;   - check ‘file-systems’ and adapt UUIDs to your setup
;;   - check ‘swap-devices’ and ‘kernel-arguments’ and adapt UUID and PARTUUID to match your swap partition
;;

(use-modules
  (gnu)
  (srfi srfi-1)                         ;provides filter procedures for lists, i.e.: remove
  (gnu services)
  (gnu services ssh)
  (gnu services xorg)
  (gnu services cups)                   ;cups print system
  (gnu services desktop)
  (gnu services networking)

  ;; Fingerprint Sensor
  ;;   On sevral Zerocat Machines, the fingerprint sensor conflicts with coreboot’s NVRAMCUI
  ;;   payload, and is therefor _unplugged_ by default. In case the sensor is available on
  ;;   your machine, enable fprintd-service-type along with these modules:
;  (gnu services authentication)         ;fprintd service

  (gnu packages cups)                   ;cups print system
  (gnu packages xfce)                   ;xfce desktop
  (gnu packages linux))                 ;kernel, bluetooth service

(operating-system
  ;; Host and Localization
  (host-name "zerocat-machine")
  (timezone "Europe/Berlin")
  (locale "de_DE.utf8")
  (keyboard-layout
    (keyboard-layout
      "de"                              ;layout names, comma separated
      ""                                ;variant names, comma separated
      #:model ""                        ;keyboard model, i.e. "pc105"
      #:options '("")                   ;comma separated options, i.e. "grp:alt_shift_toggle"
      )) ;end of keyboard-layout

  ;; Bootloader: GRUB2
  (bootloader
    (bootloader-configuration
      (bootloader grub-bootloader)
      (target "/dev/sda")
      (keyboard-layout keyboard-layout)
      (timeout 5)))

  ;; Disks and Partitions
  ;;   adapt UUIDs to your setup
  (file-systems
    (cons*
      (file-system
        (mount-point "/home")
        (device (uuid "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 'ext4))
        (type "ext4"))
      (file-system
        (mount-point "/")
        (device (uuid "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 'ext4))
        (type "ext4"))
      %base-file-systems))

  ;; Swap Space
  ;;   check ‘kernel-arguments’ ...
  ;;   try ‘sudo blkid’ to get the UUID and the PARTUUID of your swap area
  (swap-devices
    (list (uuid "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")))

  ;; Kernel and Kernel Arguments
  ;;   see ‘swap-devices’ ...
  (kernel linux-libre)
  (kernel-arguments
    (cons*
      "resume=PARTUUID=xxxxxxxx-xx"
;      "iomem=relaxed"                   ;enable flashrom to access SPI Flash Chip
      %default-kernel-arguments))

  ;; System Services
  (services
    (append
      (list
        ;; Desktop Services
        ;;
        ;; MATE Desktop:
        ;; - does enable the Gnome Display Manager (GDM) accessability dropdown menu :-)
        ;; - power-mate-backlight-helper pops up everytime the screen brightness is changed; setuid missing? :-(
        ;;   “Authentication is needed to run
        ;;     /gnu/store/mate-power-manager-1.24.2/sbin/mate-power-backlight-helper
        ;;       as the super user”
;        (service mate-desktop-service-type)
        ;;
        ;; GNOME Desktop:
        ;; - segfault warning found in dmesg output!
;        (service gnome-desktop-service-type)
        ;;
        ;; XFCE4 Desktop:
        ;; - does not enable the Gnome Display Manager (GDM) accessability dropdown menu :-(
        ;; - runs fine otherwise
        (service xfce-desktop-service-type)
        ;;
        ;; LXQT Desktop:
        ;; - does not enable the Gnome Display Manager (GDM) accessability dropdown menu :-(
        ;; - runs fine otherwise
;        (service lxqt-desktop-service-type)

        ;; Fprintd Service
        ;;   (in case a fingerprint reader is available)
;        (service fprintd-service-type)

        ;; Bluetooth Service
        ;;   In case integrated bluetooth hardware is available, enable this service
        ;;   in conjunction with the blueman program. Adjust faulty configuration.
;        (service bluetooth-service-type
;          (bluetooth-configuration
;            (auto-enable? #f)))

        ;; CUPS Print System Service
        (service cups-service-type
          (cups-configuration
            (web-interface? #t)                         ;enable http://localhost:631
              (extensions (list cups-filters epson-inkjet-printer-escpr hplip-minimal))))

        ;; Slim Display Manager
        ;;   Hmm, if not used, a second slim-service-type will keep one core in full use!?
        (service slim-service-type
          (slim-configuration
            (xorg-configuration
              (xorg-configuration
                (keyboard-layout keyboard-layout)))
            (display ":0")
            (vt "vt7")))
;        (service slim-service-type
;          (slim-configuration
;            (xorg-configuration
;              (xorg-configuration
;                (keyboard-layout keyboard-layout)))
;            (display ":1")
;            (vt "vt8")))
        ) ;end of list

      ;; Remove Gnome Display Manager (GDM) from %desktop-services,
      ;;   as we are using Slim.
      (remove
        (lambda (service)
          (eq? (service-kind service) gdm-service-type))
        %desktop-services)))

  ;; Allow resolution of .local host names
  ;;   i.e. access CUPS printers via wifi
  (name-service-switch
    %mdns-host-lookup-nss)

  ;; User Accounts
  (users
    (cons*
      (user-account
        (name "user1")
        (comment "User1")
        (group "users")
        (home-directory "/home/user1")
        (supplementary-groups
          '(
            "wheel"                     ;be a member of sudo
            "netdev"                    ;manage network interfaces through the network manager
            "audio"                     ;access the sound card
            "video"                     ;access the webcam
            "lp"                        ;access line printers, access D-Bus service
            "lpadmin"                   ;admin for line printers
;            "dialout"                   ;access serial and parallel ports
            ))) ;end of user-account
      %base-user-accounts))

  ;; System-wide Packages
  (packages
    (append
      (list
        ;; Base System with Xfce4 Desktop
        (specification->package "xfce")                         ;required by Gnome Display Manager
        (specification->package "xfce4-panel")                  ;required for xfce-desktop-service-type
        (specification->package "xfce4-screenshooter")          ;make screenshots
        (specification->package "xfce4-volumed-pulse")          ;control volume keys
        (specification->package "gvfs")                         ;user mounts
        (specification->package "xdot")                         ;visualize guix system extension-graph
        (specification->package "xset")                         ;xfce: set X bell characteristics, i.e. disable beep
        (specification->package "xinput")                       ;configure X input devices, i.e. wacom touchpad
;faulty configuration requires action:        (specification->package "blueman")                      ;bluetooth manager
        (specification->package "nss-certs")                    ;https-access
        (specification->package "setxkbmap")                    ;change the keymaps in the X server
        (specification->package "lm-sensors")                   ;read temperature/voltage/fan sensors
        (specification->package "pavucontrol")                  ;xfce: default audio mixer
        (specification->package "cups-minimal")                 ;lp, lpr command line tools

        ;; Themes
        (specification->package "gnome-icon-theme")             ;default icon theme: based on adwaita
        (specification->package "adwaita-icon-theme")           ;default icon theme: covers missing icons
        (specification->package "gnome-themes-standard")        ;default theme

        ;; Xfce4 Plugins
        (specification->package "xfce4-xkb-plugin")             ;XKB layout switching
        (specification->package "xfce4-whiskermenu-plugin")     ;application menu panel
        (specification->package "xfce4-weather-plugin")         ;show information about local weather
        (specification->package "xfce4-wavelan-plugin")         ;show stats from WLAN interface
        (specification->package "xfce4-verve-plugin")           ;command line for the Xfce panel
        (specification->package "xfce4-timer-plugin")           ;simple countdown and alarm plugin
        (specification->package "xfce4-time-out-plugin")        ;plugin that encourages periodical breaks
        (specification->package "xfce4-systemload-plugin")      ;system load display plugin
        (specification->package "xfce4-stopwatch-plugin")       ;stopwatch plugin
        (specification->package "xfce4-statusnotifier-plugin")  ;panel plugin for status notifier items
        (specification->package "xfce4-smartbookmark-plugin")   ;perform custom searches in your browser
        (specification->package "xfce4-pulseaudio-plugin")      ;PulseAudio panel plugin
        (specification->package "xfce4-places-plugin")          ;Gnome-like Places menu
        (specification->package "xfce4-netload-plugin")         ;netload plugin
        (specification->package "xfce4-mpc-plugin")             ;Music Player Daemon plugin
        (specification->package "xfce4-mount-plugin")           ;mount/unmount plugin
        (specification->package "xfce4-mailwatch-plugin")       ;mail watch plugin
;fails:        (specification->package "xfce4-kbdleds-plugin")         ;display keyboard LEDs
        (specification->package "xfce4-genmon-plugin")          ;generic program output monitor
        (specification->package "xfce4-fsguard-plugin")         ;monitor free disk space
        (specification->package "xfce4-eyes-plugin")            ;a pair of eyes
;fails:        (specification->package "xfce4-equake-plugin")          ;earthquake monitor
;fails:        (specification->package "xfce4-embed-plugin")           ;embedding of arbitrary application windows
        (specification->package "xfce4-diskperf-plugin")        ;display disk performance
        (specification->package "xfce4-datetime-plugin")        ;display date and time
        (specification->package "xfce4-cpugraph-plugin")        ;display CPU load as a graph
        (specification->package "xfce4-cpufreq-plugin")         ;display CPU frequency
        (specification->package "xfce4-clipman-plugin")         ;clipboard manager
        (specification->package "xfce4-calculator-plugin")      ;calculator
        (specification->package "xfce4-battery-plugin")         ;battery monitor

        ;; Fontconfig with Essential Set of Fonts
        (specification->package "fontconfig")                   ;run ‘fc-cache -rv’ to maintain your font cache
        (specification->package "gs-fonts")
        (specification->package "font-dejavu")
        (specification->package "font-gnu-freefont")
        (specification->package "font-bitstream-vera")          ;picked as default by GNU Icecat Webbrowser
        ;;
        ;; - more Fonts
        (specification->package "font-dosis")                   ;very simply sans serif family
        (specification->package "font-hermit")                  ;monospaced font, programming
        (specification->package "font-iosevka")
        (specification->package "font-awesome")
        (specification->package "font-rachana")
        (specification->package "font-ibm-plex")
        (specification->package "font-tex-gyre")
        (specification->package "font-fira-code")
        (specification->package "font-fira-mono")
        (specification->package "font-fira-sans")
        (specification->package "font-liberation")
        (specification->package "font-libertinus")
        (specification->package "font-sil-andika")
        (specification->package "font-sil-charis")
        (specification->package "font-sil-gentium")
        (specification->package "font-gnu-unifont")
        (specification->package "font-public-sans")
        (specification->package "font-inconsolata")
        (specification->package "font-linuxlibertine")
        (specification->package "font-fantasque-sans")
        (specification->package "font-screen-cyrillic")
        (specification->package "font-abattis-cantarell")
        (specification->package "font-blackfoundry-inria")      ;Inria Sans and Inria Serif type family
        ;;
        ;; - asiatic Fonts
        (specification->package "font-un")                      ;korean fonts
        (specification->package "font-wqy-zenhei")              ;chinese, japanese, korean fonts
        ;;
        ;; - other Fonts
        (specification->package "font-lato")                    ;latin, cyrillic, greek
        (specification->package "font-meera-inimai")            ;tamil font

        ;; Default Desktop Manifest
        ;; - GNU Privacy Guard
        (specification->package "gnupg")                        ;GNU Privacy Guard
        (specification->package "gpgme")                        ;library providing simplified access to GnuPG functionality
        (specification->package "pinentry")                     ;GnuPG’s interface to passphrase input
        ;;
        ;; - selected Software (CLI)
        (specification->package "zip")                          ;compression and file packaging/archive utility
        (specification->package "wget")                         ;file download, non-interactive
        (specification->package "unzip")                        ;decompression and file extraction utility
        (specification->package "texlive")                      ;TeX Live, a package of the TeX typesetting system
        (specification->package "youtube-dl")                   ;video download, non-interactive
        ;;
        ;; - selected Software (GUI), in case MATE Desktop is not available
        (specification->package "atril")                        ;document viewer
        (specification->package "mate-calc")                    ;calculator
        (specification->package "mousepad")                     ;text editor
        (specification->package "xarchiver")                    ;graphical front-end for archive operations
        ;;
        ;; - selected Software (GUI)
        (specification->package "vlc")                          ;media player
        (specification->package "gimp")                         ;image manipulation program
        (specification->package "icecat")                       ;web browser
        (specification->package "mumble")                       ;encrypted chat tool
        (specification->package "abiword")                      ;word processor
        (specification->package "scribus")                      ;desktop publishing and page layout program
        (specification->package "audacity")                     ;audio recording software
        (specification->package "inkscape")                     ;2d vector graphics editor, using open document format
        (specification->package "openshot")                     ;video editor
        (specification->package "guvcview")                     ;webcam application
        (specification->package "gnumeric")                     ;spreadsheet calculation
        (specification->package "gucharmap")                    ;character map to pick unusual characters
        (specification->package "keepassxc")                    ;password safe and password generator
        (specification->package "xournalpp")                    ;tablet application
        (specification->package "claws-mail")                   ;email client
        (specification->package "simple-scan")                  ;document and image scanner
        (specification->package "simplescreenrecorder")         ;screen recorder
        ;;
        ;; - Games
        (specification->package "openttd")                      ;Open Transport Tycoon Deluxe
        (specification->package "supertux")                     ;Run and Jump Game
        (specification->package "supertuxkart")                 ;Kart Game
        ) ;end of list
      %base-packages)))

;;> @endcond