;; This is my guixSD configuration with the awesome window manager. (use-modules (gnu) (gnu system nss) ;;(gnu services xorg) (srfi srfi-1)) ;; for read-string ;;(sxml ssax input-parse)) (use-service-modules admin databases desktop networking mcron monitoring sddm sysctl web xorg ) (use-package-modules base certs idutils freedesktop xorg wm) ;;(define my-keyboard ;; (call-with-input-file "/etc/config.d/01-keyboard.conf" read-string)) ;;(define my-touchpad ;; (call-with-input-file "/etc/config.d/02.touchpad.conf" read-string)) ;; I want to make my touchpad work on tapping ;; but this is not correct apparently... ;;should I use Driver "evdev" instead? synaptics is newer (define my-touchpad "Section \"InputClass\" Identifier \"touchpad\" Driver \"libinput\" MatchIsTouchpad \"on\" Option \"Tapping\" \"on\" Option \"TapButtonMap\" \"lmr\" EndSection") ;; I want X to use dvorak and swap caps (define my-dvorak "Section \"InputClass\" Identifier \"evdev keyboard catchall\" Driver \"evdev\" MatchIsKeyBoard \"on\" Option \"xkb_layout\" \"dvorak\" Option \"xkb_options\" \"ctrl:swapcaps\" EndSection") (define %my-user "joshua") (define %15-minutes (* 15 60)) (define %my-desktop-services ;; second we remove the slim service ;; (remove (lambda (service) ;; (or (eq? (service-kind service) ;; slim-service-type)))) ;; first we modify the services that we want (modify-services %desktop-services (slim-service-type config => (slim-configuration (inherit config) (auto-login? #t) (default-user "joshua") (startx (xorg-start-command #:configuration-file (xorg-configuration-file #:extra-config ;;there are some problems with my-touchpad (list my-dvorak)))))) (guix-service-type config => (guix-configuration (inherit config) (max-silent-time %15-minutes) ;; (timeout %15-minutes) ;; ok specifying the --fallback breaks the daemon. weird. ;; (extra-options '("--fallback")) )))) ;; In Guile-formatted configuration files each command that needs executing ;; is introduced with the 'job' function. This function always takes two ;; arguments, the first a time specification, and the second a command ;; specification. An optional third argument may contain a string to ;; display when this job is listed in a schedule. Additionally a USER ;; keyword argument can be supplied to use a different user than the one ;; defined in 'configuration-user' global variable. (define my-updatedb-job ;; Run 'updatedb' at 10AM every day. Here we write the ;; job's action as a Scheme procedure. #~(job '(next-hour '(10)) (lambda () (execl (string-append #$findutils "/bin/updatedb") "updatedb" "--prunepaths=/tmp /var/tmp /gnu/store")))) (define my-user-guix-pull ;; Run guix pull daily #~(job '(next-hour '(10)) "guix pull" #:user %my-user)) (define my-root-guix-reconfigure ;; Run sudo guix system reconfigure every week ;; job's action as a Scheme procedure. #~(job '(next-week) "guix system reconfigure /home/joshua/gnu/guix-config/awesome.scm" #:user %my-user)) (define my-garbage-collector-job ;; Collect garbage 5 minutes after midnight every day. ;; The job's action is a shell command. #~(job '(next-hour '(10)) ;Vixie cron syntax "guix gc -F 10G")) (operating-system (host-name "dobby") (timezone "America/New_York") (locale "en_US.utf8") ;; hopefully this will fix my weird mouse issue if usbkbd is not loaded. (kernel-arguments '("modprobe.blacklist=usbkbd")) ;; I think blacklisting libinput may be causing me to always have a mouse that doesn't work. ;;(kernel-arguments '("modprobe.blacklist=usbkbd,libinput")) (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (target "/boot/efi") (menu-entries (list (menu-entry (label "Debian") (linux "/boot/vmlinuz-4.9.0-8-amd64") (linux-arguments '("root=/dev/sda6")) (initrd "/boot/initrd.img-4.9.0-8-amd64")))))) (file-systems (cons* (file-system ;; /dev/sda3 (device (file-system-label "root")) (mount-point "/") (type "ext4")) (file-system ;; /dev/sda4 (device (file-system-label "home")) (mount-point "/home") (type "ext4")) ;;/home doesn't need to execute programs ;; it shouldn't, but if I mount it that way, I can't log into X ;;(flags '("no-exec"))) (file-system (device (file-system-label "prog")) (mount-point "/home/joshua/prog") (type "ext4")) (file-system (device "/dev/sda1") (mount-point "/boot/efi") (type "vfat")) %base-file-systems)) (swap-devices '("/dev/sda2")) (users (cons (user-account (name "joshua") (comment "Joshua") (group "users") ;; Adding the account to the "wheel" group ;; makes it a sudoer. Adding it to "audio" ;; and "video" allows the user to play sound ;; and access the webcam. (supplementary-groups '("wheel" "kvm" "audio" "video")) (home-directory "/home/joshua")) %base-user-accounts)) ;; Globally-installed packages. (packages (cons* awesome nss-certs xorg-server-xwayland wayland weston %base-packages)) ;; add my configured desktop-services (services (cons* (console-keymap-service "dvorak") ;;(gnome-desktop-service) ;; darkstat may only really be useful for seeing ;; who views my server ;; I can view this here: ;; http://127.0.0.1:667/ (service darkstat-service-type (darkstat-configuration (interface "enp0s9"))) ;; (mcron-service (list ;; my-garbage-collector-job ;; my-updatedb-job ;; my-root-guix-reconfigure ;; my-user-guix-pull ;; )) (mysql-service) (service nginx-service-type (nginx-configuration (file "/etc/nginx/nginx.conf"))) ;; archive my logs every now and then ;; I'd like to costimize this to be monthly ;; instead of the default weekly (service rottlog-service-type) ;;(sddm-service) ;; make linux use RAM more than it uses swap. ;; it would be cool to store my config in the store ;;https://lists.gnu.org/archive/html/help-guix/2017-08/msg00095.html (service sysctl-service-type (sysctl-configuration (settings '(("vm.swappiness" . "30"))))) (service tor-service-type) %my-desktop-services)) ;;letting weston launch itself ;; (setuid-programs (cons #~(string-append #$weston "/bin/weston-launch") ;; %setuid-programs)) (name-service-switch %mdns-host-lookup-nss))