Audio configuration

Hello,

I recently installed guix onto a newly acquired laptopn (alienware x14 r1). Install went smooth, but I did notice that audio (microphone, speakers) only works if I have usb-c headphones plugged in.

With out headphones connected, the audio output in gnome settings just says “dummy output”, and there’s no input device specified for the microphone. If I connect usb-c headphones the output and input fields now have valid options. I can also connect bluetooth devices and their output and input options show up in the appropriate fields in gnome settings.

So audio capability is their, just not always active. I don’t know if this is a gnome thing, or if I need to tweak my guix config. I searched around and found the guix sound and audio services so maybe I need to add some of that into my config? Though my prior laptop audio stuff worked without having to tweak any of that so I’m not sure.

For reference my config is (how cool is it that someone can just paste their system config somewhere. Ahh the power of declarative configuration):



(use-modules (gnu) (nongnu packages linux))
(use-modules (gnu packages dns))
(use-service-modules cups desktop networking ssh xorg nix)
(use-package-modules gnome vpn package-management)

(operating-system
(kernel linux)
(firmware (list linux-firmware))
(locale “en_US.utf8”)
(timezone “America/New_York”)
(keyboard-layout (keyboard-layout “us”))
(host-name “blackflame”)

;; The list of user accounts (‘root’ is implicit).
(users (cons* (user-account
(name “mike”)
(comment “Mike”)
(group “users”)
(home-directory “/home/mike”)
(supplementary-groups '(“wheel” “netdev” “audio” “video”)))
%base-user-accounts))

;; Packages installed system-wide.  Users can also install packages
;; under their own account: use ‘guix search KEYWORD’ to search
;; for packages and ‘guix install PACKAGE’ to install a package.
(packages (cons* openresolv openvpn nix %base-packages))

;; Below is the list of system services.  To search for available
;; services, run ‘guix system search KEYWORD’ in a terminal.
(services
(cons* (service nix-service-type)
(service gnome-desktop-service-type)
(service bluetooth-service-type)
(service cups-service-type)
(set-xorg-configuration
(xorg-configuration (keyboard-layout keyboard-layout)))

       ;; This is the default list of services we
       ;; are appending to, or modifying.
      (modify-services %desktop-services
         (guix-service-type config => (guix-configuration
            (inherit config)
            (substitute-urls
               (append (list "https://substitutes.nonguix.org")
                 %default-substitute-urls))
            (authorized-keys
               (append (list (local-file "./signing-key.pub"))
		   %default-authorized-guix-keys))))

         (network-manager-service-type config =>
	(network-manager-configuration
	(inherit config)
	(vpn-plugins (list network-manager-openvpn)))))))

(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(targets (list “/boot/efi”))
(keyboard-layout keyboard-layout)))
(initrd-modules (append '(“vmd”) %base-initrd-modules))
(mapped-devices (list (mapped-device
(source (uuid
“5eed7e07-c2f3-4e7c-9731-93882aad44e0”))
(target “cryptroot”)
(type luks-device-mapping))))

;; The list of file systems that get “mounted”.  The unique
;; file system identifiers there (“UUIDs”) can be obtained
;; by running ‘blkid’ in a terminal.
(file-systems (cons* (file-system
(mount-point “/boot/efi”)
(device (uuid “F074-E8AD”
'fat32))
(type “vfat”))
(file-system
(mount-point “/”)
(device “/dev/mapper/cryptroot”)
(type “ext4”)
(dependencies mapped-devices)) %base-file-systems)))

Thanks for any help you might be able to provide!

it looks like you’re building onto %desktop-services with gnome & X11, so you’re probably running pulseaudio.

  • it looks like you would have whatever firmware you need, since linux-firmware rolls everything into one.
  • try guix shell alsamixer, then run alsamixer. see if it shows your output device. that’s the lower level Linux interface for desktop audio.
  • pulseaudio & pipewire build on top of that. try guix shell pavucontrol and launch pavucontrol if it’s not already installed.

if the alsa thing doesn’t show your device, you’ll need to run lspci -v and figure out which it is.

  • guix shell hwloc then lstopo will display a graph of your PCIe bus. helps a ton.
  • then ensure you have the software needed: check modules with lsmod | grep $modulename where modulename’s probably related to the uhh hardware/vendor.
  • maybe check on the linux-hardware database to get more info on the device. and maybe run a probe (guix shell again, see the link)
  • maybe check the BIOS config for things. if it works on another Linux ISO, it should be workable.