From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id kKGhIjt/YGQ4fwEASxT56A (envelope-from ) for ; Sun, 14 May 2023 08:27:07 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id SOfHITt/YGRVvwAAG6o9tA (envelope-from ) for ; Sun, 14 May 2023 08:27:07 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 24A754199F for ; Sun, 14 May 2023 08:27:07 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1py5C2-0004MK-RS; Sun, 14 May 2023 02:26:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pxFAu-0004Zj-UL for guix-devel@gnu.org; Thu, 11 May 2023 18:54:17 -0400 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pxFAd-0008VP-4n for guix-devel@gnu.org; Thu, 11 May 2023 18:54:01 -0400 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-96649b412easo1012793066b.0 for ; Thu, 11 May 2023 15:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683845635; x=1686437635; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=yBbvSfvDSP8sKRPCN1/lGJN2SS6Zksz/4GYbl7qNivo=; b=ZIeyGvlUkTNkQfWou4VtGtlBt8Hu+Qsf+iQAZy7DDdG6/kAi/oLWGdmikizSE1HyQN VklDarKmjtRctI+b3qtaH4Tbxy58U8ZfE9eDWqVXnRGChi5JDHm+nPFjUp4YLT9rjyBG YKyeO5+m0S6Xq7euzqr3z6qOkeixcWclp3Zb375DyNClvKnuP+to7N3ZE4S0Ep3GSFWh NQgjeKi59RXzCOLKh/d5gq7mwVCpd/QwZk9Fks/BlzbRRyu2ZquUGHNlAWdQXcBqaW5w ht2mksC6RqHR/ghjQnKHueYZs2Kb2e0OIfJX1wwHXV6J/SI4USIfYRhlvPJ5hHGZ+Jhd 71Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683845635; x=1686437635; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yBbvSfvDSP8sKRPCN1/lGJN2SS6Zksz/4GYbl7qNivo=; b=VUDLQ4HXySyAOV+12jKVD5v/Kl/GxUUHQ8SApEe+V8v8PeQovIfmH4cXGQa2TDjj3n ud/Q3XE5KGp3WdxAMDHdy3khxR/X+wh+id+fAJhVhpSfDP7a5BMYTy7Xxl4HZCU7AwdG 7aeSAlrON9FOiWNgEpIdhDLDjkMryXuj3dBoTLZBrOH7V6pt/yaRdwXNSESD+XH8RkIJ jv+PbtbS2skvhdUAplNJMT2a6b9M/ya7nSNCPKZ7/VxHnXa/1MgRRb40Xd3Y0j83tuJg rUPVCz+QQ1iUfCwk4+LVqlMUSOv9eV37aft1pUJUTVmMsNN6m7JSFcIpqHbODgAvxfIT ZC6A== X-Gm-Message-State: AC+VfDyihdJhmKPF2o/MtC+/9l7PHXatPTIvw/5F4l9aA9VGv/ged3R0 5RVdZBfqzKIdOKEQGon3r29svbbReJ6Wq5EoNEgh23bKqkI= X-Google-Smtp-Source: ACHHUZ7vVQQBDgJZKq2JEUKgmbwAf6016hGD0h04y6vyLfqLCAgVzt7rkB1Gi0CG7ai/7s4viztf8PtxlZpvmHiNEiU= X-Received: by 2002:a17:907:8694:b0:96a:1c2a:5a38 with SMTP id qa20-20020a170907869400b0096a1c2a5a38mr8655243ejc.11.1683845634853; Thu, 11 May 2023 15:53:54 -0700 (PDT) MIME-Version: 1.0 References: <87r0rsd1gw.fsf@gmail.com> In-Reply-To: <87r0rsd1gw.fsf@gmail.com> From: Hunter Jozwiak Date: Thu, 11 May 2023 18:53:23 -0400 Message-ID: Subject: Fwd: Writing an Accessible Guix ISO To: guix-devel@gnu.org Content-Type: multipart/alternative; boundary="000000000000ec0ee705fb72dc81" Received-SPF: pass client-ip=2a00:1450:4864:20::636; envelope-from=hunter.t.joz@gmail.com; helo=mail-ej1-x636.google.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TRACKER_ID=0.1, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 14 May 2023 02:26:52 -0400 X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1684045627; a=rsa-sha256; cv=none; b=HQ9QIe+IyLb2NtdVRPtwdUuCZDAKOj6SBNJ23wjeEuERUK3utEBoctwtG77VJBBb2aJnFp m3uRaUWBAjI/jPEupK7zyCJ8K5G2AhN80Yz961wQ3O1AR2UclVn5OL8Rb9N1DkNBmJwsPo 26UyuD675n9twCrIj+iMMR8ah6pAS1rY0dT6EePK4o99JvwkrJTEiLml/KfKKijdyyamP5 ZNGIrEymGnhoCl10AjS6qcZPgP22BDJK7Bu2eI2BeSgdihaRkm56V9f8OY1uHN8H+Sm0FS DcrBiaZolyQRS5XDkbrK+GK96RXUvcGK08LAjO/QyC34R7d+Zsd5SN1eSGN/6g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=ZIeyGvlU; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1684045627; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=yBbvSfvDSP8sKRPCN1/lGJN2SS6Zksz/4GYbl7qNivo=; b=AyhbozMcyyqJbaY85xHi0P5sEFhaQxKTFY3dUMeQZxrwk2ZW0vhXy66D8ySV0/QOD82rgA SS1BQhgUNH3c1y5+QnvgVP2jxb9dlXJO78HdvpMkU8tfAMj/MgnB5PUEI7RXIDRsdEFAGy dFjp7PwKzXQ/axqBcGYCLzMpC4Ekcp/wo8h4VyEests/PmHZgrBfDL6TPE1SRWiGNQJk2/ pSk/JpsPluGezg61l2zh6xqouRANZLu6OSv7dsA06Rb5LzsRkGj5oVdJMGFXvAEUaDT7sP qf9DdKbWVPBKDCmNQ7yovunoD/vyt5jVSuxJ0+Tpsh2S5NaNUX3Gchf9EdM9Yg== X-Migadu-Spam-Score: -7.37 X-Spam-Score: -7.37 X-Migadu-Queue-Id: 24A754199F X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=ZIeyGvlU; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-TUID: b8hmYFWZXHDe --000000000000ec0ee705fb72dc81 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Howdy, Here is a project I am interested in getting into Guix in some fashion, copied from my email I sent to help-guix a while back. Any mentorship and/or help pointers would be appreciated, and I appologize for the double posting. ---------- Forwarded message --------- From: Hunter Jozwiak Date: Sun, May 7, 2023 at 3:50=E2=80=AFAM Subject: Writing an Accessible Guix ISO To: Greetings, I have been hacking for quite some time now on the Guix installer, trying to get it to run with the espeakup screenreader which I have the module and package for in Guix already. Here is what I have managed to come up with thus far, after a time. (define-module (nongnu system install) #:use-module (gnu services) #:use-module (gnu services ssh) #:use-module (gnu services sound) #:use-module (gnu services configuration) #:use-module (gnu services linux) #:use-module (gnu services shepherd) #:use-module (guix gexp) #:use-module (guix records) #:use-module (gnu system) #:use-module (gnu system install) #:use-module (gnu packages accessibility) #:use-module (gnu packages version-control) #:use-module (gnu packages vim) #:use-module (gnu packages curl) #:use-module (gnu packages emacs) #:use-module (gnu packages linux) #:use-module (gnu packages mtools) #:use-module (gnu packages package-management) #:use-module (guix) #:export (installation-os-accessible)) (define-configuration/no-serialization espeakup-configuration (espeakup (file-like espeakup) "Set the package providing the @code{/bin/espeakup} command.") (default-voice (string "en-US") "Set the voice that espeak-ng should use by default.")) (define (espeakup-shepherd-service config) (list (shepherd-service (provision '(espeakup)) (requirement '(user-processes)) (documentation "Run espeakup, the espeak-ng bridge to speakup.") (start #~(make-forkexec-constructor (list #$(file-append (espeakup-configuration-espeakup config) "/bin/espeakup") "-V" #$(espeakup-configuration-default-voice config)))) (stop #~(make-kill-destructor))))) (define espeakup-service-type (service-type (name 'espeakup) (extensions (list (service-extension shepherd-root-service-type espeakup-shepherd-service) (service-extension kernel-module-loader-service-type (const (list "speakup_soft"))))) (default-value (espeakup-configuration)) (description "Configure and run espeakup, a lightweight bridge between espeak-ng and speakup."))) (define installation-os-accessible (operating-system (inherit installation-os) ;; Add the 'net.ifnames' argument to prevent network interfaces ;; from having really long names. This can cause an issue with ;; wpa_supplicant when you try to connect to a wifi network. (kernel-arguments '("quiet" "modprobe.blacklist=3Dradeon" "net.ifnames=3D0" "console=3DttyS0,115200" "speakup.synth=3Dsoft")) (services (cons* ;;; Todo unmute all the audio channels. (service alsa-service-type) (service espeakup-service-type) (modify-services (operating-system-user-services installation-os) (openssh-service-type config =3D> (openssh-configuration (inherit config) (allow-empty-passwords? #t) (%auto-start? #t)))))) ;; Add some extra packages useful for the installation process (packages (append (list espeakup git curl stow vim emacs-no-x-toolkit alsa-utils) (operating-system-packages installation-os))))) installation-os-accessible The main questions I have so far are these: 1. I know that the espeakup service is incomplete and when I was experimenting it was perpetually disabled. I have a reference of how it = is done in systemd, but not sure how to translate it to the correct shepher= d things; pointers to corrections appreciated (I suspect that the kernel-loader service is a modprobe of sorts, not sure how to solve for = the sound requirement as yet). [Unit] Description=3DSoftware speech output for Speakup Documentation=3Dman:espeakup(8) Wants=3Dmodprobe@speakup_soft.service After=3Dmodprobe@speakup_soft.service sound.target [Service] Type=3Dforking PIDFile=3D/run/espeakup.pid Environment=3D"default_voice=3D" ExecStart=3D@bindir@/espeakup --default-voice=3D${default_voice} ExecReload=3Dkill -HUP $MAINPID Restart=3Dalways Nice=3D-10 OOMScoreAdjust=3D-900 [Install] WantedBy=3Dsound.target As an update, I did manage to get espeakup to sort of enable itself with herd enable espeakup and I tried herd start espeakup, but nothing fruitf= ul happened. 2. Is it true that the defaults is to mute all the channels by default, and if so how can this be undone? As it stands now, the system has everything muted when I run alsamixer and the volumes were all 0. 3. The ssh was meant more as a fail safe in case all else had failed, and there was no audio to speak of; that and it has been somewhat invaluable in debugging the system. In practical uses, this will likely need to be shorn up and locked down again. In the case someone needs to ssh into the box, is there a way to hijack the installer from an ssh session (the code spelunking I have done thus far suggests no, but I might be wrong)? Thanks, Hunter --000000000000ec0ee705fb72dc81 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Howdy,

Here is a project I am intereste= d in getting into Guix in some fashion, copied from my email I sent to help= -guix a while back. Any mentorship and/or help pointers would be appreciate= d, and I appologize for the double posting.

---------- Forwarded message -----= ----
From: Hunter Jozwia= k <hunter.t.joz@gmail.com>
Date: Sun, May 7, 2023 at 3:50=E2= =80=AFAM
Subject: Writing an Accessible Guix ISO
To: <help-guix@gnu.org>


Greetings,

I have been hacking for quite some time now on the Guix installer, trying t= o get it to run with the espeakup screenreader which I have the module and = package for in Guix already. Here is what I have managed to come up with th= us far, after a time.

(define-module (nongnu system install)
  #:use-module (gnu services)
  #:use-module (gnu services ssh)
  #:use-module (gnu services sound)
  #:use-module (gnu services configuration)
  #:use-module (gnu services linux)
  #:use-module (gnu services shepherd)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (gnu system)
  #:use-module (gnu system install)
  #:use-module (gnu packages accessibility)

  #:use-module (gnu packages version-control)
  #:use-module (gnu packages vim)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages emacs)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages mtools)
  #:use-module (gnu packages package-management)
  #:use-module (guix)
  #:export (installation-os-accessible))

(define-configuration/no-serialization espeakup-configuration
  (espeakup
   (file-like espeakup)
   "Set the package providing the @code{/bin/espeakup} command.")
  (default-voice
    (string "en-US")
    "Set the voice that espeak-ng should use by default."))

(define (espeakup-shepherd-service config)
  (list (shepherd-service
         (provision '(espeakup))
         (requirement '(user-processes))
         (documentation "Run espeakup, the espeak-ng bridge to speakup=
.")
         (start
          #~(make-forkexec-constructor
             (list #$(file-append (espeakup-configuration-espeakup config)
                                  "/bin/espeakup")
                   "-V" #$(espeakup-configuration-default-voice c=
onfig))))
         (stop #~(make-kill-destructor)))))

(define espeakup-service-type
  (service-type
   (name 'espeakup)
   (extensions
    (list (service-extension
           shepherd-root-service-type
           espeakup-shepherd-service)
          (service-extension
           kernel-module-loader-service-type
           (const (list "speakup_soft")))))
   (default-value (espeakup-configuration))
   (description
    "Configure and run espeakup, a lightweight bridge between espeak-n=
g and speakup.")))
(define installation-os-accessible
  (operating-system
   (inherit installation-os)
   ;; Add the 'net.ifnames' argument to prevent network interfaces
   ;; from having really long names.  This can cause an issue with
   ;; wpa_supplicant when you try to connect to a wifi network.
   (kernel-arguments '("quiet" "modprobe.blacklist=3Drad=
eon" "net.ifnames=3D0" "console=3DttyS0,115200" &q=
uot;speakup.synth=3Dsoft"))

   (services
    (cons*
     ;;; Todo unmute all the audio channels.
     (service alsa-service-type)
     (service espeakup-service-type)
     (modify-services (operating-system-user-services installation-os)
                      (openssh-service-type config =3D>
                                            (openssh-configuration
                                             (inherit config)
                                             (allow-empty-passwords? #t)
                                             (%auto-start? #t))))))

   ;; Add some extra packages useful for the installation process
   (packages
    (append (list espeakup git curl stow vim emacs-no-x-toolkit alsa-utils)
            (operating-system-packages installation-os)))))

installation-os-accessible

The main questions I have so far are these:

  1. I know that the espeakup service is incomplete and when I was experimenting= it was perpetually disabled. I have a reference of how it is done in syste= md, but not sure how to translate it to the correct shepherd things; pointe= rs to corrections appreciated (I suspect that the kernel-loader service is = a modprobe of sorts, not sure how to solve for the sound requirement as yet= ).

    [Unit]
    Description=3DSoftware speech output for Speakup
    Documentation=3Dman:espeakup(8)
    Wants=3Dmodprobe@speakup_soft.service
    After=3Dmodprobe@speakup_soft.service sound.target
    
    [Service]
    Type=3Dforking
    PIDFile=3D/run/espeakup.pid
    Environment=3D"default_voice=3D"
    ExecStart=3D@bindir@/espeakup --default-voice=3D${default_voice}
    ExecReload=3Dkill -HUP $MAINPID
    Restart=3Dalways
    Nice=3D-10
    OOMScoreAdjust=3D-900
    
    [Install]
    WantedBy=3Dsound.target
    

    As an update, I did manage to get espeakup to sort of enable itself with he= rd enable espeakup and I tried herd start espeakup, but nothing fruitful ha= ppened.

  2. Is it true that the defaults is to mute all the channels by default, an= d if so how can this be undone? As it stands now, the system has everything= muted when I run alsamixer and the volumes were all 0.
  3. The ssh was meant more as a fail safe in case all else had failed,

and there was no audio to speak of; that and it has been somewhat invaluable in debugging the system. In practical uses, this will likely need to be shorn up and locked down again. In the case someone needs to ssh into the box, is there a way to hijack the installer from an ssh sessio= n (the code spelunking I have done thus far suggests no, but I might be wro= ng)?

Thanks,

Hunter

--000000000000ec0ee705fb72dc81--