(use-modules
  (curth0)
  (gnu bootloader)
  (gnu bootloader grub)
  (gnu packages)
  (gnu services base)
  (gnu services desktop)
  (gnu services security-token)
  (gnu services xorg)
  (gnu system keyboard)
  (gnu system file-systems)
  (gnu system mapped-devices)
  (guix gexp)
  (nongnu packages linux)
  (nongnu system linux-initrd))

(operating-system
  (kernel linux)
  (initrd microcode-initrd)
  (firmware (list linux-firmware))
  (locale "fr_FR.UTF-8")
  (timezone "America/Sao_Paulo")
  (keyboard-layout
    (keyboard-layout "br" #:options '("caps:swapescape" "esperanto:qwerty")))
  (host-name "velhinho")
  (users
    (append
     (let ((user-groups '("wheel" "netdev" "audio" "video")))
       (list
        (user-account
          (name "andreh")
          (comment "EuAndreh")
          (group "users")
          (supplementary-groups user-groups))
        (user-account
          (name "other")
          (comment "Other Self")
          (group "users")
          (supplementary-groups user-groups))))
      %base-user-accounts))
  (packages
    (append
     (map (compose list specification->package+output symbol->string)
          '(nss-certs
            i3-wm))
     %base-packages))
  (services
    (append
     (list
      (service bluetooth-service-type)
      (service pcscd-service-type)
      (service gnome-desktop-service-type)
      (set-xorg-configuration
        (xorg-configuration
          (keyboard-layout keyboard-layout)
          (extra-config (list #"-
                                Section "InputClass"
                                    Identifier "touchpad"
                                    Driver "libinput"
                                    MatchIsTouchpad "on"
                                    Option "Tapping" "on"
                                EndSection
                                "#)))))
     (modify-services %desktop-services
       (guix-service-type config =>
         (guix-configuration
           (inherit config)
           (substitute-urls
             (append '("https://substitutes.nonguix.org")
                     %default-substitute-urls))
           (authorized-keys
             (append (list (plain-file "non-guix.pub" #"-
                                         (public-key
                                           (ecc
                                             (curve Ed25519)
                                             (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))
                                         "#))
                     %default-authorized-guix-keys)))))))
  (bootloader
    (bootloader-configuration
      (bootloader grub-efi-bootloader)
      (targets (list "/boot/efi"))
      (keyboard-layout keyboard-layout)))
  (mapped-devices
    (list
     (mapped-device
       (source (uuid "6b0d38a6-d93e-4f8e-a59a-7729f5adf892"))
       (target "cryptroot")
       (type luks-device-mapping))))
  (file-systems
    (append
     (list
      (file-system
        (mount-point "/boot/efi")
        (device (uuid "1B26-9F4E" 'fat32))
        (type "vfat"))
      (file-system
        (mount-point "/")
        (device "/dev/mapper/cryptroot")
        (type "ext4")
        (dependencies mapped-devices)))
     %base-file-systems)))
