From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id 4LVDOnnaV2RYNwEASxT56A (envelope-from ) for ; Sun, 07 May 2023 19:06:02 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id SKYnOnnaV2SyrAAAauVa8A (envelope-from ) for ; Sun, 07 May 2023 19:06:01 +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 5C1E2453E for ; Sun, 7 May 2023 19:06:01 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pvhX6-0000dT-T2; Sun, 07 May 2023 12:46:48 -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 1pvZAa-0003xg-E2 for help-guix@gnu.org; Sun, 07 May 2023 03:51:00 -0400 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pvZAX-0002mr-Cx for help-guix@gnu.org; Sun, 07 May 2023 03:51:00 -0400 Received: by mail-qv1-xf2f.google.com with SMTP id 6a1803df08f44-61b2f654b54so17466056d6.3 for ; Sun, 07 May 2023 00:50:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683445855; x=1686037855; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=+tTmhrlrzp9XOuHMB9EXH8gxk091SHy2C+tt157mvFU=; b=sNg2sXgii9u6Dkct8Cft15ErIsPP7OcTgpSV7BouHL8IXRint51rh22Vrt/uiyS9Yl I7/VXo2xL1R/CbOAalbEbYL5aho9VKeEjwqy/aFac+QQRVOYDl159yRpnV6ATKTBvk9w yWIKlG8KQAYBD5jFKdsBPewthqxnocfm7IoaLzstwvRIZ8KcLYFnb8ckJg2YM/4IhMbl ZnQnRleXyZc7p9Z014k+lIyPf1v52s8tatkkqMQvsaQsz4yLT8G9l8fuEp0a7zgvKa4v 5KljViY+UDL32qoHrpTMWe9IEOk7eBrGLL3J3PNzRYjNl66Qw8ZMdeCQAXLTJRv/smIU ybeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683445855; x=1686037855; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=+tTmhrlrzp9XOuHMB9EXH8gxk091SHy2C+tt157mvFU=; b=ErOxtjzMjc0bMwUvqqTb5nRMs14G6bqBnauYWbajA/+qZWfFKPC7nEoUfawWExLkMX iC4aO0kJBePQrUtjE8mrvx/Y9cz0fXxoRCevjoQfmdo5nNBWjW8KHPspJVQ6dnARPDtR ri1MIHdlyzSNk6XgWNo9NDQYxfRraf5G3kYRf41xp43xMKe/TWeyUBGSHMgL+Po5b8EM JQvWz6Ta2xk0VRY0su42QDSHVqrcqpcYnjxP++bc8boM44SWHbPkBuMDEpR1OP3Ou0Yc 9Iw3nq/sWR8Ks8VlEx9Vg2Iv3HTzsrOEjPwBMMxKgxzw7H9tmLBg9gOzuALcoWEXYXeJ 90ow== X-Gm-Message-State: AC+VfDxfe0j1jQ/tFs9pD6TAaXeWL8dMlkCqjENzeUYAQXgEQVMi9aH0 wOuZA64QNG42Vl0YVfazWDcUIz8eLxjGUQ== X-Google-Smtp-Source: ACHHUZ4dHeVJbFVBtBzjqHQvDtD+W4yy2GUUe3i79mcco+ApWQw/jB4DijIYYBDuZTHO+gNCussRFw== X-Received: by 2002:ad4:5f48:0:b0:621:1a4c:759b with SMTP id p8-20020ad45f48000000b006211a4c759bmr2477155qvg.36.1683445855243; Sun, 07 May 2023 00:50:55 -0700 (PDT) Received: from tekunen ([2601:547:202:930::365c]) by smtp.gmail.com with ESMTPSA id g7-20020a05620a108700b0074d1d3b2143sm1776824qkk.118.2023.05.07.00.50.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 May 2023 00:50:54 -0700 (PDT) From: Hunter Jozwiak To: help-guix@gnu.org Subject: Writing an Accessible Guix ISO Date: Sun, 07 May 2023 03:50:39 -0400 Message-ID: <87r0rsd1gw.fsf@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::f2f; envelope-from=hunter.t.joz@gmail.com; helo=mail-qv1-xf2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 07 May 2023 12:46:33 -0400 Content-Type: text/plain X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-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=1683479161; a=rsa-sha256; cv=none; b=R+/wj3ntWrnRMY++mMlH8STkTYvPngjJY+QZVTgUSaqabbhYItaVgOIvsewgmszQ/9ZzVS VgFQgRR41TJA5rK1D+mkbI0a2SHHQnVZbF3m/1DLqXyRKSmeQ5AqlsF4Br3ALQyGjUTKPf vJ2uRZLV+NzG54up/U9bKSYmfZsyN+CXttKb5Ah+xNthXNNPm6+XDfyhfDbnvHY72yB2Oy u9sUwwB7VJgt1qlPPYXowcla2rUhz9gOSnTOkjZE44SWCqWQXuDTA85Wcz3BjXiLbuzTOI 2jlvRSRn2soDkQW8i6I2+HRfQUfemaBwsKlxfa7elTzuOt0MG4b1WWCh9k0Ktw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20221208 header.b=sNg2sXgi; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1683479161; 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:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=agsxcXfQ8eNme/eT8g0hGy1O4xWCSIfKMjERlrF+qBQ=; b=BsfY3P3EPzRxfQNMCP/l0bKNoAq7XBJp1jXcfXsPJUPzSZArh2D5WDGbshoRpor5lMJauX wDB7aEd6Fs7QQTX9NYQ5p8g+G2OAzwuckaHLnZqEHfIt3djB7LyIykWCesFnM+mCm9J5b0 hNbs6dKiyfocUwwNR1PiyZTL0OzFgRL4l8pitWVfTDbglRGaB7KShJDe0KXrPk2R5oSH3A jUd4WXMW3iSV49JBguEMtt0JLKtqMfG3lfwSBy4Mou5qUcI0Gyexk4gFEm4nMndoPWAnsv WOm0hxC/pwjq2fdY9wYulmwUV1B/lWwzSRBz/3tyW18si63jv37VezTH+8xS1Q== X-Migadu-Spam-Score: -1.19 X-Spam-Score: -1.19 X-Migadu-Queue-Id: 5C1E2453E X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20221208 header.b=sNg2sXgi; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" X-TUID: DuRX6gOzlfPz 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. #+begin_src scheme :eval no (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=radeon" "net.ifnames=0" "console=ttyS0,115200" "speakup.synth=soft")) (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 => (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 #+end_src 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 shepherd 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). #+begin_src conf [Unit] Description=Software speech output for Speakup Documentation=man:espeakup(8) Wants=modprobe@speakup_soft.service After=modprobe@speakup_soft.service sound.target [Service] Type=forking PIDFile=/run/espeakup.pid Environment="default_voice=" ExecStart=@bindir@/espeakup --default-voice=${default_voice} ExecReload=kill -HUP $MAINPID Restart=always Nice=-10 OOMScoreAdjust=-900 [Install] WantedBy=sound.target #+end_src 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 fruitful 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