;; This is an operating system configuration generated (use-modules (guix utils)) (use-modules (guix packages)) (use-modules (gnu services networking)) (use-modules (gnu services audio)) (use-modules (gnu) (gnu system nss)) (use-service-modules networking ssh) (use-package-modules bootloaders certs suckless wm) (use-service-modules desktop networking cups ssh xorg avahi mail) (use-package-modules certs gnome cups) (use-modules (gnu packages shells)) (use-modules (gnu packages vim)) (use-modules (gnu)) (use-package-modules screen) ;; other guix (use-modules (gnu system locale)) (use-modules (guix store)) (use-modules (rnrs lists)) (use-modules (srfi srfi-1)) (use-package-modules base idutils) (use-service-modules dns mcron messaging) (define %local-fs-boot-efi-partition "/dev/sda1") (define %local-grub-ubuntu-menuentries (list (menu-entry (label "Ubuntu GNU/Linux") (linux "(lvm/tf1e5mXubuntu-boot)/vmlinuz") (linux-arguments '("root=/dev/mapper/tf1e5mXubuntu-root ro --verbose nosplash debug")) (initrd "(lvm/tf1e5mXubuntu-boot)/initrd.img")))) (define %localmachine-host-name "komputilo") (define %localmachine-account-uid 1000) (define %localmachine-account-user-name "s") (define %localmachine-account-comment "shyam") (define %localmachine-account-group-name "users") (define %localmachine-account-group-gid 1000) (define %localmachine-account-supplementry-groups '("wheel" "netdev" "audio" "video")) (define %localmachine-account-home-parent-directory "/home") (define %localmachine-account-shell #~(string-append #$zsh "/bin/zsh")) (define %localmachine-gdm-auto-login #f) (define %localmachine-gdm-allow-empty-password #t) (define %localmachine-account-create-home-directory #f) (define %localmachine-guix-substitute-urls '("https://ci.guix.gnu.org" "https://bayfront.guixsd.org" "http://guix.genenetwork.org" "https://guix.tobias.gr" "https://ci.guix.info/" ;; "https://berlin.guixsd.org" "https://berlin.guix.gnu.org")) (define %localmachine-guix-extra-options '( ;; "--max-jobs=2" ;; "--cores=1" "--gc-keep-derivations=yes" "--gc-keep-outputs=yes")) (define %localmachine-guix-use-substitutes #t) ;always true (define %localmachine-network-manager-dns "dnsmasq") (define %localmachine-default-realm #f) (use-modules (gnu packages linux)) (use-modules (guix modules)) (define (open-non-udev-lvm-device source targets) "Return a gexp that maps SOURCES to TARGETSS as a LVM device, using 'lvm'." (with-imported-modules (source-module-closure '((gnu build file-systems))) #~(let ((source #$source) (targets '#$targets) (lvm-bin #$(file-append lvm2-static "/sbin/lvm"))) ;; Use 'lvm2-static', not 'lvm2', to avoid pulling the ;; whole world inside the initrd (for when we're in an initrd). (begin (format #t "Enabling ~a~%" '#$targets) (sleep 1) (system* lvm-bin "vgscan" "--mknodes") (sleep 1) (map (lambda (file) (system* lvm-bin "vgchange" "-ay" (car (string-split file #\-)))) '#$targets) (sleep 1) (map (lambda (file) (zero? (system* lvm-bin "lvchange" "-aay" "-y" "--sysinit" "--ignoreskippedcluster" (string-join (string-split file #\-) "/")))) '#$targets) #t)))) (define (close-non-udev-lvm-device sources targets) "Return a gexp that closes TARGETS, a LVM device." #~(begin (map (lambda (file) (zero? (system* #$(file-append lvm2-static "/sbin/lvm") "lvchange" "-an" "-y" (string-join (string-split file #\-) "/")))) '#$targets) #t)) ;; The type of LVM mapped devices. (define non-udev-lvm-device-mapping (mapped-device-kind (open open-non-udev-lvm-device) ;; (check check-non-udev-lvm-device) (close close-non-udev-lvm-device))) (define %localmachine-mapped-device-guix-root (mapped-device (source "/dev/DUMMY") (target "guix-root") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-device-guix-boot (mapped-device (source "/dev/DUMMY") (target "guix-boot") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-device-guix-gnu (mapped-device (source "/dev/DUMMY") (target "guix-gnu") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-device-guix-swap (mapped-device (source "/dev/DUMMY") (target "guix-swap") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-device-guix-tmp (mapped-device (source "/dev/DUMMY") (target "guix-tmp") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-device-guix-var (mapped-device (source "/dev/DUMMY") (target "guix-var") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-device-house-home (mapped-device (source "/dev/test") (target "house-home") (type non-udev-lvm-device-mapping))) (define %localmachine-mapped-devices (list %localmachine-mapped-device-guix-root %localmachine-mapped-device-guix-boot %localmachine-mapped-device-guix-gnu %localmachine-mapped-device-guix-var %localmachine-mapped-device-guix-swap %localmachine-mapped-device-guix-tmp %localmachine-mapped-device-house-home)) ;;; guix system: error: service 'swap-/dev/mapper/guix-swap' requires 'device-mapping-guix-swap', which is not provided by any service (define %localmachine-swap-devices (list "/dev/mapper/guix-swap")) (define %localmachine-file-system-guix-root (file-system (mount-point "/") (device "/dev/mapper/guix-root") (type "ext4") (check? #f) (mount? #t) (create-mount-point? #t) (needed-for-boot? #t) (dependencies %localmachine-mapped-devices))) ;; (define %localmachine-file-system-guix-swap (file-system (mount-point "/xyz") ;; (device (string-append "/dev/mapper/guix-swap")) ;; (type "ext4") ;; (check? #f) ;; (mount? #f) ;; (create-mount-point? #f) ;; (needed-for-boot? #t) ;; (dependencies %localmachine-mapped-devices))) (define %localmachine-file-system-guix-boot (file-system (mount-point "/boot") (device "/dev/mapper/guix-boot") (type "ext4") (check? #f) (mount? #t) (create-mount-point? #t) (needed-for-boot? #t) (dependencies (append (list %localmachine-file-system-guix-root) %localmachine-mapped-devices)))) (define %localmachine-file-system-guix-gnu (file-system (mount-point "/gnu") (device "/dev/mapper/guix-gnu") (type "ext4") (check? #f) (mount? #t) (create-mount-point? #t) (needed-for-boot? #t) (dependencies (append (list %localmachine-file-system-guix-root) %localmachine-mapped-devices)))) (define %localmachine-file-system-guix-tmp (file-system (mount-point "/tmp") (device "/dev/mapper/guix-tmp") (type "ext4") (check? #f) (mount? #t) (create-mount-point? #t) (needed-for-boot? #t) (dependencies (append (list %localmachine-file-system-guix-root) %localmachine-mapped-devices)))) (define %localmachine-file-system-guix-var (file-system (mount-point "/var") (device "/dev/mapper/guix-var") (type "ext4") (check? #f) (mount? #t) (create-mount-point? #t) (needed-for-boot? #t) (dependencies (append (list %localmachine-file-system-guix-root) %localmachine-mapped-devices)))) (define %localmachine-file-system-house-home (file-system (mount-point "/home") (device "/dev/mapper/house-home") (type "ext4") (check? #f) (mount? #t) (create-mount-point? #t) (needed-for-boot? #f) (dependencies (append (list ;; %localmachine-file-system-guix-root ) %localmachine-mapped-devices)))) (define %localmachine-file-system-boot-efi (file-system (mount-point "/boot/efi") (device "/dev/sda1") (mount? #t) (create-mount-point? #t) (needed-for-boot? #t) (type "vfat") (dependencies (append (list %localmachine-file-system-guix-boot %localmachine-file-system-guix-root) %localmachine-mapped-devices)))) (define %localmachine-lvm-mount-home-file-systems (list %localmachine-file-system-house-home)) (define %localmachine-mount-lvm-system-file-systems (list %localmachine-file-system-guix-root ;; %localmachine-file-system-guix-swap %localmachine-file-system-guix-boot %localmachine-file-system-guix-gnu %localmachine-file-system-guix-tmp %localmachine-file-system-guix-var)) (define %localmachine-lvm-system-file-systems (append %localmachine-mount-lvm-system-file-systems %localmachine-lvm-mount-home-file-systems)) (define %localmachine-lvm-file-systems (append %localmachine-lvm-system-file-systems)) (define %localmachine-other-file-systems (list %localmachine-file-system-boot-efi)) (define %localmachine-file-systems (append %localmachine-lvm-file-systems %localmachine-other-file-systems %base-file-systems)) ;; packages (use-modules (gnu packages glib)) (define %localmachine-other-packages (list "polkit" "polkit-gnome" "autorandr" "xmodmap" "hplip" "simple-scan" "xsane" "sane-backends" "sane-backends-minimal" "glib-networking" "xf86-input-evdev")) (define %localmachine-system-selected-package-names (list "glibc-utf8-locales" "gdm" "gpm" "slock" ; need suid "zsh" "stumpwm" "sbcl-stumpwm-cpu" "sbcl-stumpwm-mem" "sbcl-stumpwm-numpad-layouts" "sbcl-stumpwm-screenshot" "sbcl-stumpwm-winner-mode" "guile-wm" "windowmaker" ;; "findutils" "idutils" "dovecot" "xinput" "ibus" "m17n-lib" "m17n-db" ;; "twm" ;; "herbstluftwm" "ecryptfs-utils")) (define %localmachine-package-names-for-installation (append %localmachine-other-packages %localmachine-system-selected-package-names)) (define %localmachine-system-desktop-packages ;; (list lvm2 ;; ;; for HTTPS access ;; nss-certs ;; ;; for user mounts ;; gvfs) '()) (define %localmachine-system-selected-packages (map specification->package %localmachine-package-names-for-installation)) (define %localmachine-system-packages (append %localmachine-system-desktop-packages %localmachine-system-selected-packages)) (define %localmachine-reinit-packages (append %localmachine-system-packages %base-packages)) (define %localmachine-packages %localmachine-reinit-packages) (define %localmachine-keyboard-layout (keyboard-layout "us" "altgr-intl")) (define %localmachine-grub-ubuntu-menuentries %local-grub-ubuntu-menuentries) (define %localmachine-efi-bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (target "/boot/efi") (keyboard-layout %localmachine-keyboard-layout) (menu-entries %localmachine-grub-ubuntu-menuentries))) (define %localmachine-metal-initrd base-initrd) (define %localmachine-simple-groups (list (user-group (name %localmachine-account-group-name) (id %localmachine-account-group-gid)))) (define %localmachine-groups (append %localmachine-simple-groups %base-groups)) (define %localmachine-simple-users (list (user-account (uid %localmachine-account-uid) (name %localmachine-account-user-name) (comment %localmachine-account-comment) (group %localmachine-account-group-name) (supplementary-groups %localmachine-account-supplementry-groups) (create-home-directory? %localmachine-account-create-home-directory)))) (define %localmachine-users (append %localmachine-simple-users %base-user-accounts)) (define %localmachine-services %base-services) (define %localmachine-firmware %base-firmware) (define %localmachine-locale "en_US.utf8") (define %localmachine-locate-names (list "en_US" "hi_IN" "ur_PK" "fa_IR" "ar_SA")) (define %localmachine-all-locale-definitions (map (lambda (locale) (locale-definition (source locale) (name (string-append locale "." "utf8")))) %localmachine-locate-names)) (define %localmachine-locale-definitions (append %localmachine-all-locale-definitions %default-locale-definitions)) (define %localmachine-timezone "Asia/Kolkata") (define %localmachine-bootloader %localmachine-efi-bootloader) (define %localmachine-initrd %localmachine-metal-initrd) ;; (define %localmachine-setuid-programs %setuid-programs) (define %localmachine-setuid-programs (cons* #~(string-append #$ecryptfs-utils "/sbin/mount.ecryptfs_private") %setuid-programs)) (define %localmachine-kernel linux-libre) (operating-system (kernel %localmachine-kernel) (kernel-arguments '(" modprobe.blacklist=usbmouse,usbkbd --verbose nosplash debug")) (firmware %localmachine-firmware) (initrd %localmachine-initrd) (locale %localmachine-locale) (locale-definitions %localmachine-locale-definitions) (timezone %localmachine-timezone) (keyboard-layout %localmachine-keyboard-layout) (host-name %localmachine-host-name) (setuid-programs %localmachine-setuid-programs) (mapped-devices %localmachine-mapped-devices) (users %localmachine-users) (groups %localmachine-groups) (file-systems %localmachine-file-systems) (swap-devices %localmachine-swap-devices) (bootloader %localmachine-bootloader) (packages %localmachine-packages) (services %localmachine-services) ;; Allow resolution of '.local' host names with mDNS. (name-service-switch %mdns-host-lookup-nss))