;; sudo guix system reconfigure this-file.scm (use-modules (gnu) (gnu home services) (gnu services desktop) (gnu packages haskell-apps) (gnu packages node) (gnu packages aspell) (gnu packages base) (gnu packages cmake) ;; (gnu packages terminals) (nongnu packages linux) (nongnu packages mozilla) (nongnu system linux-initrd) ) (use-service-modules desktop networking ssh ;; xorg sound) (use-package-modules curl wget vim lisp lisp-xyz emacs guile wm version-control package-management disk terminals sqlite fonts ; for cjk fonts rust-apps ; for ripgrep ) (operating-system (kernel linux) (initrd microcode-initrd) (firmware (cons* iwlwifi-firmware %base-firmware)) (locale "en_US.utf8") (timezone "America/Denver") (keyboard-layout ; NOTE likely this only works for TTY (keyboard-layout "us" "intl" ;; This may be overwritten by GNOME. To configure GNOME, use `dconf write ;; /org/gnome/desktop/input-sources/xkb-options "['ctrl:nocaps']" #:options '("ctrl:nocaps"))) (host-name "guu") (users (cons* (user-account (name "jin") (comment "Jin") (group "users") (home-directory "/home/jin") (supplementary-groups '("wheel" "input" "audio" "video" "netdev" "tty" "lp"))) %base-user-accounts)) (packages ; NOTE This affects all users on the system. (append (list git curl wget vim neovim ripgrep ranger emacs-pgtk ; this is required on wayland for emacs GUI stow ;; cmake gnu-make ; required by emacs' vterm ;; firefox font-google-noto-sans-cjk ;; alacritty ;; kmonad ; makes it easier to remap keyboards at the kernel level ;; node ; provides npm, which is required by emacs' LSP mode ;; sqlite ; required by org-roam ;; aspell ; required by emacs' spell ;; graphviz ; good for `guix graph coreutils | dot -Tpdf > dag.pdf` ;; zathura ;; sbcl stumpwm `(,stumpwm "lib") ;; yazi ghostty ; these are not provided from the channels. ) %base-packages)) (services (append (list (service openssh-service-type (openssh-configuration (permit-root-login #f))) ;; (service accountsservice-service-type) ; this seems to conflict with desktop service, but not caught before build. ;; (service elogind-service-type) ;; (service lxqt-desktop-service-type) ; lightest desktop env ;; (service gnome-desktop-service-type) ; heaviest desktop env (service console-font-service-type (map (lambda (tty) ;; Use a larger font for HIDPI screens (cons tty (file-append font-terminus "/share/consolefonts/ter-132n"))) '("tty1" "tty2" "tty3"))) ) (modify-services %desktop-services ; necessary for guix home, stumpwm.. (guix-service-type config => (guix-configuration (inherit config) (substitute-urls (append (list "https://substitutes.nonguix.org") %default-substitute-urls)) ;; This gives access to nonguix substitute server. See Doc: 6.3.3. ;; Getting Substitutes from Other Servers (authorized-keys (append `(,(plain-file "non-guix.pub" " (public-key (ecc (curve Ed25519) (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))")) %default-authorized-guix-keys)))) ;; config for kmonad (udev-service-type config => (udev-configuration (inherit config) (rules (cons kmonad (udev-configuration-rules config))))) (delete console-font-service-type) ; why must I delete this here? / this should not conflict with nonguix subs server.. ;; (elogind-service-type ;; config => ;; (elogind-configuration ;; (handle-lid-switch 'ignore))) ; TODO does not seem to work.. should I restart? ) )) (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (targets '("/boot/efi")) (keyboard-layout keyboard-layout))) (swap-devices (list (swap-space (target "/dev/sda2")))) (file-systems (append (list (file-system (mount-point "/") (device "/dev/sda3") (type "ext4")) (file-system (mount-point "/boot/efi") (device "/dev/sda1") (type "vfat"))) %base-file-systems)))