guix.org 115 KB

What is guix and Guix System?

Guix is a universal package manager, and Guix System is the official GNU operating system, which is an ethical, privacy preserving, and powerful operating system.

vocab

  • master means the package only forces a rebuild of 300 packages or
  • less.
  • staging means that the package forces a rebuild of 300-1200
  • packages.
  • core-updates means that the package forces a rebuild of 1,200
  • packages.

express vpn

Is express vpn leaking my DNS requests?

https://www.cogipas.com/is-my-vpn-working/

helping the bug request for guix system

https://www.dnsleaktest.com/results.html https://dnsleak.com/results?token=5pynytpbmomhbu24

My current config file.


cat /gnu/store/nm4dvmsffrghdxjlqj712qhrv6w4fd4m-openvpn.conf 

client proto udp dev tun ca /home/joshua/prog/guile/guix-config/vpn/ca2.crt cert /home/joshua/prog/guile/guix-config/vpn/client.crt key /home/joshua/prog/guile/guix-config/vpn/client.key persist-key persist-tun fast-io verb 3 auth-user-pass /home/joshua/prog/guile/guix-config/vpn/login.conf remote-cert-tls server nobind resolv-retry infinite remote switzerland-ca-version-2.expressnetw.com 1195

the options in the config file that I need to create:

Feb 19 10:49:28 localhost shepherd[1]: Service vpn-client has been started. Feb 19 10:49:28 localhost openvpn[11762]: TCP/UDP: Preserving recently used remote address: [AF_INET]89.187.165.181:1195 Feb 19 10:49:28 localhost openvpn[11762]: Socket Buffers: R=[212992->212992] S=[212992->212992] Feb 19 10:49:28 localhost openvpn[11762]: UDP link local: (not bound) Feb 19 10:49:28 localhost openvpn[11762]: UDP link remote: [AF_INET]89.187.165.181:1195 Feb 19 10:50:28 localhost openvpn[11762]: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) Feb 19 10:50:28 localhost openvpn[11762]: TLS Error: TLS handshake failed Feb 19 10:50:28 localhost openvpn[11762]: SIGUSR1[soft,tls-error] received, process restarting Feb 19 10:50:28 localhost openvpn[11762]: Restart pause, 5 second(s) Feb 19 10:50:33 localhost openvpn[11762]: TCP/UDP: Preserving recently used remote address: [AF_INET]89.187.165.43:1195 Feb 19 10:50:33 localhost openvpn[11762]: Socket Buffers: R=[212992->212992] S=[212992->212992] Feb 19 10:50:33 localhost openvpn[11762]: UDP link local: (not bound) Feb 19 10:50:33 localhost openvpn[11762]: UDP link remote: [AF_INET]89.187.165.43:1195 Feb 19 10:51:33 localhost openvpn[11762]: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) Feb 19 10:51:33 localhost openvpn[11762]: TLS Error: TLS handshake failed Feb 19 10:51:33 localhost openvpn[11762]: SIGUSR1[soft,tls-error] received, process restarting Feb 19 10:51:33 localhost openvpn[11762]: Restart pause, 5 second(s) Feb 19 10:51:38 localhost openvpn[11762]: TCP/UDP: Preserving recently used remote address: [AF_INET]89.187.165.48:1195 Feb 19 10:51:38 localhost openvpn[11762]: Socket Buffers: R=[212992->212992] S=[212992->212992] Feb 19 10:51:38 localhost openvpn[11762]: UDP link local: (not bound) Feb 19 10:51:38 localhost openvpn[11762]: UDP link remote: [AF_INET]89.187.165.48:1195

roptat aka Jullien says that I should make an opaque service type

  • [ ] persist-key
  • [ ] persist-tun
  • [ ] remote-random
  • [ ] pull
  • [ ] comp-lzo no
  • [ ] tls-client does tls-auth provide this option???
  • [ ] verify-x509-name Server name-prefix
  • [ ] ns-cert-type server possibly deprecated?
  • [ ] key-direction 1 another way of specifying tls-auth?
  • [X] route-method exe This is only useful on Windows.
  • [X] route-delay 2
  • [X] tun-mtu 1500 The documentation says most cases...I should leave this to it's default parameter.
  • [X] fragment 1300
  • [X] mssfix 1200
  • [X] cipher AES-256-CBC
  • [X] keysize 256 deprecated. Do not need. and my key size is the cipher size anyway.
  • [X] auth SHA512 I have no idea where this is in the documentation
  • [X] sndbuf 524288 I should not need these, to get expressvpn. The default should work.
  • [X] rcvbuf 524288 as above
  • [ ] auth-user-pass login.conf

opaque-prosody-configuration

So my openvpn configuration would look like:


  (service openvpn-client-service-type
           (opaque-openvpn-client-configuration
            (openvpn.opvn 
             "dev tun
             fast-io
             persist-key
             persist-tun
             nobind
             remote switzerland-ca-version-2.expressnetw.com 1195
             # more stuff here
             ")))

It could be that you just want to get a ‘prosody.cfg.lua’ up and running. In that case, you can pass an ‘opaque-prosody-configuration’ record as the value of ‘prosody-service-type’. As its name indicates, an opaque configuration does not have easy reflective capabilities. Available ‘opaque-prosody-configuration’ fields are:

-- ‘opaque-prosody-configuration’ parameter: package prosody The prosody package.

-- ‘opaque-prosody-configuration’ parameter: string prosody.cfg.lua The contents of the ‘prosody.cfg.lua’ to use.

For example, if your ‘prosody.cfg.lua’ is just the empty string, you could instantiate a prosody service like this:

apparently I am leaking DNS requests...

(service prosody-service-type (opaque-prosody-configuration (prosody.cfg.lua "")))

I could use google's nameservers:

nameserver 8.8.8.8 nameserver 8.8.4.4

Or

Neustar DNS Advantage (156.154.70.1 and 156.154.71.1), Level3 DNS (4.2.2.1 and 4.2.2.2)

I may be able to use network-manager-openvpn plugin to help me connect that way.

https://www.expressvpn.com/support/vpn-setup/manual-config-for-linux-ubuntu-with-openvpn/?offer=3monthsfree&offer_code=3c6hjoor69&gclid=EAIaIQobChMInu-F5c3v5wIVzLHtCh1lEQVpEAAYAyAAEgJImvD_BwE

Also I may not be able to get the nm-applet to work in sway at the moment...

https://github.com/swaywm/sway/issues/1357

But i may be able to control network manager via dmenu

I can use network manager to connect to express vpn

https://github.com/firecat53/networkmanager-dmenu

This might be the script that turns on my vpn.

#+BEGIN_SRC sh nmcli con up my_expressvpn_switzerland_udp #+END_SRC

#+RESULTS:

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

https://lists.gnu.org/archive/html/help-guix/2020-03/msg00069.html

man nmcli


  nmcli network connectivity check
full

You can also import an openvpn configuration file. The file may need to have the keys listed in the file. It may need to look like the following.


ca>
-----BEGIN CERTIFICATE-----
some-long-cert-string...
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
some-long-cert-string
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
some-long-private-key-string
-----END PRIVATE KEY-----
</key>--

sudo nmcli connection import type openvpn file your-openvpn-config-file.ovpn

  nmcli con show
NAME UUID TYPE DEVICE
Wired connection 1 fb1729d6-597c-3548-843e-0f1aec419f17 ethernet enp0s25
my_expressvpn_switzerland_udp 09422048-0bd9-48ca-970c-c6ebe98bdd16 vpn --

man nmcli

man nmcli-examples

man nm-settings

There is a setting called "secondaries". This is a list of connection UUIDs. Essentially, after my wired connection connects, then my vpn will connect.

MISCellaneous

make wayland/sddm use dvorak

This page says that gnome has to configure my input devices https://wayland.freedesktop.org/libinput/doc/latest/faqs.html#faq-config-options

This page says that there are ways for Xorg to configure my input devices https://jlk.fjfi.cvut.cz/arch/manpages/man/libinput.4

making GuixSD automatically swap caps

https://linux.die.net/man/5/xorg.conf

#+BEGIN_SRC guile (locale "en_US.utf8") ;;(initrd-modules (list "e1000e" "i915" %base-initrd-modules)) (keyboard-layout (keyboard-layout "us" "dvorak" #:model "thinkpad" #:options '("ctrl:swapcaps")))

#+END_SRC

This email list letter might let me do it. Also it looks like GuixSD uses Slim https://lists.gnu.org/archive/html/help-guix/2016-08/msg00070.html

#+BEGIN_SRC sh :results output cat ~/.xsession #+END_SRC

#+RESULTS:

#!/bin/sh

setxkbmap dvorak
setxkbmap -option 'ctrl:swapcaps'

a sample guix config

I had some issues getting X to work on Guix System. Now I use sway and have no problems.

making X work again: slash logging in

https://github.com/yenda/guix-config

list of errors:

  • Open ACPI failed /var/run/acpid.socket no such file or directory
  • failed to open module nv. Module does not exist
  • failed to open fbdev. does not exist
  • failed to load vesa. Does not exist
  • loads in nouveau.

head -n 30 /var/log/slim.log

slim: waiting for X server to shut down

slim: pam_authentication(): User not known to the underlying authentication module

slim: waiting for X server to shut down

slim: unexpected signal 15 slim: connection to X server lost.

slim: waiting for X server to shut down

slim: pam_authentication(): Authentication failure slim: pam_authentication(): User not known to the underlying authentication module

slim: pam_authentication(): Authentication failure slim: pam_authentication(): User not known to the underlying authentication module

So there's some kind of authentication error.

I see an error message about logind. Something about logind requires something starting with a "k" that was not provided.

logging in properly to X

You can get this information from /var/log/messages

using guile-emacs

Dec 5 21:09:54 localhost gnome-session-binary[443]: WARNING: Could not parse desktop file xscreensaver.desktop or it references a not found TryExec binary Dec 5 21:09:55 localhost gnome-keyring-daemon[475]: couldn't access control socket: /run/user/0/keyring/control: No such file or directory Dec 5 21:09:55 localhost gnome-keyring-daemon[476]: couldn't access control socket: /run/user/0/keyring/control: No such file or directory Dec 5 21:09:55 localhost gnome-keyring-daemon[477]: couldn't access control socket: /run/user/0/keyring/control: No such file or directory

guix environment --ad-hoc --pure guile-emacs -- emacs -q

command to check my cpu vunerabilities

You can see here some of the things that my laptop is vulnerable, and the libre kernel tries to mitigate those.


lscpu

Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 36 bits physical, 48 bits virtual CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 23 Model name: Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz Stepping: 6 CPU MHz: 1778.483 CPU max MHz: 2534.0000 CPU min MHz: 800.0000 BogoMIPS: 5054.24 Virtualization: VT-x L1d cache: 64 KiB L1i cache: 64 KiB L2 cache: 6 MiB NUMA node0 CPU(s): 0,1 Vulnerability Itlb multihit: KVM: Vulnerable Vulnerability L1tf: Mitigation; PTE Inversion Vulnerability Mds: Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled Vulnerability Meltdown: Mitigation; PTI Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Full generic retpoline, STIBP disabled, RSB filling Vulnerability Tsx async abort: Not affected Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm pti tpr_shadow vnmi flexpriority dtherm

cool guix webpage

compiling guix and updating guix!

http://dustycloud.org/misc/talks/guix/chicagolug_2015/guix_talk.html

info:guix#Building from Git

#+BEGIN_SRC sh :results output :exports both guix environment --pure guix ./bootstrap # make by needed make doc/ # for building only the documentation make clean ./configure --localstatedir=/var make check make authenticate # make install

creating a smaller test-suite.log file for bug submitting:

./pre-inst-env sudo -E guix system reconfigure #+END_SRC make check TEST=tests/packages.scm

trying to discover the linux kernel modules that I need

These are all the kernel modules that I use. Apparently.


lspci -v | grep "Kernel driver in"

Kernel driver in use: i915 Kernel driver in use: e1000e Kernel driver in use: uhci_hcd Kernel driver in use: uhci_hcd Kernel driver in use: uhci_hcd Kernel driver in use: ehci-pci Kernel driver in use: snd_hda_intel Kernel driver in use: pcieport Kernel driver in use: pcieport Kernel driver in use: pcieport Kernel driver in use: pcieport Kernel driver in use: pcieport Kernel driver in use: uhci_hcd Kernel driver in use: uhci_hcd Kernel driver in use: uhci_hcd Kernel driver in use: ehci-pci Kernel driver in use: lpc_ich not touchpad Kernel driver in use: ata_piix Kernel driver in use: i801_smbus possibly touchpad Kernel driver in use: yenta_cardbus possibly touchpad Kernel driver in use: firewire_ohci

  • i915 is for my graphics
  • e1000e is for my internet
  • uhci_hcd is for my usb port and so is ehci-pci
  • snd_hda_intel is for my audio device
  • pcieport is for my 4 pci express ports! I have 4!?

I can block list the joydev driver/ custom kernel

That is for joysticks, and I do not use those.

lsmod shows me all kernel modules loaded.

lspci -v shows me more kernel modules I need.

using the nix-service

It looks like i915 is for Intel Graphics and and e1000e is for my ethernet.

nix-env --install firefox

nix-env --uninstall firefox

nix-env --upgrade firefox

how do I enable substitutes from hydra.gnu.org?

nix-env -qa firefox (query for packages)

guix archive --authorize ??

how to update guix:

guix archive --authorize < hydra.gnu.org.pub

guix pull as every user

Installing Guix from Guix

To update the whole system. ie: pacman -Syu equivalent:

#+BEGIN_SRC sh :results output :exports both joshua@dobby $ sudo bash --login root@dobby # guix pull && guix system reconfigure config.scm #+END_SRC

To update my user's packages #+BEGIN_SRC sh :results output :exports both joshua@dobby $ guix pull joshua@dobby $ guix package -u #+END_SRC

wipe-ing Paul's macbook clean and adding in random data

  1. If you are wiping your hard drive for security, you should populate it with random data rather than zeros (This is going to take even longer than the first
  2. example.) :

dd if=/dev/urandom of=/dev/sdX bs=1M *replace X with the target drive letter.

Replace X with the target drive letter.

debugging build failures

access tor hidden services

You need to replace sda with the device name you want to overwrite. sda is usually the first hard drive, the second drive would be sdb and so on. Use for example gparted to find the correct drive. If you replace the device name, you can also wipe USB sticks and other peripherals. https://www.gnu.org/software/guix/manual/en/html_node/Debugging-Build-Failures.html#Debugging-Build-Failures

https://ahmia.fi/search/?q=the

learn how to raise the elephant

Here is a list of them, but I can't connect to any of them.

Does raising the elephant mean that I have to reboot? Can I recover a system without rebooting?

https://en.wikipedia.org/wiki/Magic_SysRq_key

https://en.wikipedia.org/wiki/File:KeyboardWithPrintScreenRinged.svg

https://superuser.com/questions/652385/how-do-i-use-magic-sysreq-keys-on-a-mac

https://bugs.launchpad.net/mactel-support/+bug/262408/comments/17

Raising Elephants Is So Utterly Boring

unRaw take control of the keyboard back from X or wayland

tErminate send SIGTERM to all processes, allowing them to terminate gracefully.

kIll send SIGTERM to all processes, making them stop NOW

Sync flush data to disk

Unmount all filesystems and remount read-only

reBoot

guile-sqee guile FFI interface to postgresql

I don't think that raising the elephant works so well with guix. When I tried it, the shepherd tried to restart all services, and that failed to work.

/run/current-system /run/booted-system

https://notabug.org/cwebber/guile-squee

current-system is the current system.

booted-system is the last booted system.

how to find configuration files that guix generates

guix system reconfigure -n sway.scm

This will show you the derivations that guix has to do.

like this

#+BEGIN_SRC sh :results output :exports both :dir home/joshua/prog/guile/guix-config. guix system reconfigure -n sway.scm #+END_SRC

#+RESULTS:

The following derivations would be built:
   /gnu/store/mdf47km71lx3fhw1zplzmyhmlwh4g2zk-system.drv
   /gnu/store/knr1glycm101cnnvdhkzzc03cw0ahmd2-etc.drv
   /gnu/store/1rz0w8misyl8ckragkdhzig296dnjf3q-pulse.drv
   /gnu/store/mnbw59khxdfdxxp71bhn6x0yqhz3r8l3-daemon.conf.drv
   /gnu/store/4xbg22g3vjvpk9kxrgd3skj398xfj5k7-dbus-configuration.drv
   /gnu/store/sfd0jknw8y4xzssrfgr1v48rms0k7wgr-geoclue-wrapper.drv
   /gnu/store/p8632rqs6hnfly5kz2z2isd6gccylk49-geoclue-program-wrapper.drv
   /gnu/store/ywgrq77ka7fihap70fk4pk33m8260blh-dbus-system-services.drv
   /gnu/store/79srvc4pky6lqz9fj1iz730sj65dj551-asound.conf.drv
   /gnu/store/zvxx3pbik7dn96wjpkkv0fac9aqd0bf3-shepherd-vpn-client.scm.drv
   /gnu/store/zvxx3pbik7dn96wjpkkv0fac9aqd0bf3-shepherd-vpn-client.go.drv

You can then look at various files and try to figure it out where the configuration file may be.

That file looks interesting. Let's build it.

#+BEGIN_SRC sh :results output :exports both joshua@dobby $ guix build /gnu/store/xp3ril0dkk6d0fa53d7jl6ypcd1dpdhl-shepherd-vpn-client.scm.drv #+END_SRC

#+RESULTS:

The following derivation will be built:
   /gnu/store/xp3ril0dkk6d0fa53d7jl6ypcd1dpdhl-shepherd-vpn-client.scm.drv
building /gnu/store/xp3ril0dkk6d0fa53d7jl6ypcd1dpdhl-shepherd-vpn-client.scm.drv...
successfully built /gnu/store/xp3ril0dkk6d0fa53d7jl6ypcd1dpdhl-shepherd-vpn-client.scm.drv
/gnu/store/b6h8njd1mcf7wp7bic5drzqjyphlilrn-shepherd-vpn-client.scm

Ok let's open that vpn-client.scm file!

#+BEGIN_SRC sh :results output :exports both cat /gnu/store/b6h8njd1mcf7wp7bic5drzqjyphlilrn-shepherd-vpn-client.scm #+END_SRC

#+RESULTS:

(eval-when (expand load eval) (let ((extensions (quote ())) (prepend (lambda (items lst) (let loop ((items items) (lst lst)) (if (null? items) lst (loop (cdr items) (cons (car items) (delete (car items) lst)))))))) (set! %load-path (prepend (cons "/gnu/store/wy6fvwp3dfrp9frckdascrrb9rvn3h3g-module-import" (map (lambda (extension) (string-append extension "/share/guile/site/" (effective-version))) extensions)) %load-path)) (set! %load-compiled-path (prepend (cons "/gnu/store/xd4lwx10ljn902712sphac3k0k97g1vy-module-import-compiled" (map (lambda (extension) (string-append extension "/lib/guile/" (effective-version) "/site-ccache")) extensions)) %load-compiled-path))))(begin (use-modules (shepherd service) (oop goops) (guix build utils) (guix build syscalls)) (make  #:docstring (quote "Run the OpenVPN client daemon.") #:provides (quote (vpn-client)) #:requires (quote (networking)) #:one-shot? (quote #f) #:respawn? (quote #t) #:start (make-forkexec-constructor (list (string-append "/gnu/store/hckbwgfqym6x6zcfg6320d0z10a56h6b-openvpn-2.4.8" "/sbin/openvpn") "--writepid" "/var/run/openvpn/openvpn.pid" "--config" "/gnu/store/nm4dvmsffrghdxjlqj712qhrv6w4fd4m-openvpn.conf" "--daemon") #:pid-file "/var/run/openvpn/openvpn.pid") #:stop (make-kill-destructor) #:actions (make-actions)))

Aha! There is my config file!

#+BEGIN_SRC sh :results output :exports both cat /gnu/store/nm4dvmsffrghdxjlqj712qhrv6w4fd4m-openvpn.conf #+END_SRC

#+RESULTS: #+begin_example client proto udp dev tun ca /home/joshua/prog/guile/guix-config/vpn/ca2.crt cert /home/joshua/prog/guile/guix-config/vpn/client.crt key /home/joshua/prog/guile/guix-config/vpn/client.key persist-key persist-tun fast-io verb 3 auth-user-pass /home/joshua/prog/guile/guix-config/vpn/login.conf remote-cert-tls server nobind resolv-retry infinite remote switzerland-ca-version-2.expressnetw.com 1195 #+end_example

dual booting

Here are some relevant links: https://www.gnu.org/software/guix/manual/html_node/GRUB-Configuration.html http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20067 https://lists.gnu.org/archive/html/guix-devel/2016-02/msg00543.html

I do not have to rely on that hack anymore! It should work normally! https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20067

make the manual mention "make"

grub

boot from grub to a usb stick

As soon as you see the grub command line press the "c" key. You'll be dropped into a grub shell. You'll know you're there, because you'll see


grub >

Now, this is what you type

set root=(

Now press TAB and grub will give you some options. Grub will expand what you wrote into


set root=(hd

Grub will then tell you to either press 1 or 0. hd0 is your hard drive. You don't want that. So type


set root=(hd1)

Now type


chainloader +1

That will essentially tell the grub that is on your harddisk, to chainload to the usb. This means that the usb stick has grub (or some other similiar software on it). So grub won't try to find a bootable kernel on the usb stick. Instead, your harddrive's grub will hand over controll to the usb stick's grub.


boot

boot to an installed GNU/Linux distro on your machine


set root=(hd0,PartionNumberWhere/BootIs)
linux /boot/vmlinuz-linux-libre root=/dev/sdaPartionNumberWhereRootIs
initrd /boot/initramfs-linux-libre.img
boot

For me this looks like:


set root=(hd0,1)
linux /boot/vmlinuz-linux-libre root=/dev/sda1
initrd /boot/initramfs-linux-libre.img
boot

getting guix System to boot

When you get to grub, use this command to boot to guix.

configfile (hd1)/boot/grub/grub.cfg

channels are cool!

I can have a git repo somewhere of various packages.

;;; This module implements "channels." A channel is usually a source of ;;; package definitions. There's a special channel, the 'guix' channel, that ;;; provides all of Guix, including its commands and its documentation. ;;; User-defined channels are expected to typically provide a bunch of .scm ;;; files meant to be added to the '%package-search-path'.

I can specify default channels with %default-channels variable. That is kind of cool.

Channels are put in ~/.config/guix/channels.scm

An example channel file looks like:


(cons (channel (name 'my-personal-packages) 
      (url "https://notabug.org/jbranso/guix-packages.git"))
      %default-channels)

consider using nonguix channel for updating cpu microcode

pkill9's channel

using guile's module system on channels

writing sections to the guix cookbook

setting up sway

https://gitlab.com/nonguix/nonguix https://gitlab.com/pkill-9/guix-packages-free/tree/master/pkill9/packages joshuaBPMan: change "gnu packages emacs jmacs" to "jmacs" really? May I ask why that works? What did I do wrong? [15:43] joshuaBPMan: it just needs to mirror the directory structure e.g. if the module is in /path/to/module.scm, the part next to "define-module" needs to be "(path to module)" [15:53] pkill9: thanks!

Sway is a tiling window manager written for wayland. Since it does not officially support login managers, most users will need to execute "sway" at the virtual console after login. However, according to Sway's developers, the GNOME display manager, usually works to start sway.

Sway does have a configuration file as well. You can download the sway config file and modify it for yourself.

guix package -i sway wget

wget https://raw.githubusercontent.com/swaywm/sway/master/config.in

mkdir -p ~/.config/sway/

mv config.ini ~/.config/sway/config

If gdm works to start sway for you, then swell. However, some users might have issues getting sway to start for them. Here is a minimal configuration file for sway that removes gdm. You can now login to sway after login to the virtual console by typing sway.


  (use-modules (gnu) (guix)
   (srfi srfi-1))

  (use-service-modules desktop xorg)

  (operating-system
   (host-name "dobby")
   (timezone "America/Indiana/Indianapolis")
   (locale "en_US.utf8")
   ;; Boot in "legacy" BIOS mode, assuming /dev/sdX is the
   ;; target hard disk, and "my-root" is the label of the target
   ;; root file system.
   (bootloader (bootloader-configuration
                (bootloader grub-bootloader)
                (keyboard-layout keyboard-layout)
                (target "/dev/sda")))

   (file-systems
    (cons* (file-system
            (mount-point "/")
            (device "/dev/sda1")
            (type "btrfs"))
           %base-file-systems))
   (users (cons*
           (user-account
            (name "user name")
            (comment "user name")
            (group "users")
            (home-directory "/home/user")
            (supplementary-groups
             '("wheel" "netdev" "audio" "video")))
           %base-user-accounts))

   ;; Globally-installed packages.
   (packages (append (map specification->package
                          '("nss-certs"))
                     %base-packages))

   (services
    (cons*

     (modify-services
      (remove (lambda (service)
                (member (service-kind service)
                        (list
                         gdm-service-type
                         )))
              %desktop-services) ;;end of remove services
      ))))

You can also set up sway to autostart after you login. Add this to your ~/.bash_profile



if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
  XKB_DEFAULT_LAYOUT=us exec sway
fi

I can use debbugs-gnu

:PROPERTIES: :ID: 7325c252-fcf3-4957-9581-b7982f069b4d :END: https://debbugs.gnu.org/cgi/pkgreport.cgi?package=guix

C-u M-x debbugs-gnu RET RET guix-patches RET n y

I may also be able to use Gnus to reply to the bug reports.

I can just use nttp:news.gmane.org

guix package -i xf86-video-intel

or

guix package -i xf86-video-nouveau

TODO things I can do

TODO create a shepherd service to start my vpn

    the bug report is here. https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26158 :LOGBOOK:
  • State "TODO" from [2021-01-26 Tue 10:20]
  • State "TODO" from [2020-06-05 Fri 18:09]
  • :END: :LOGBOOK:
  • State "TODO" from [2020-08-07 Fri 12:43]
  • :END:

joshuaBPMan: look up (service-extension shepherd-root-service-type _) [11:53] joshuaBPMan: I'm not that sharp with Shepherd but I think that style of service creation is for shepherd instances started by your user, rather than PID1 "init"

man shepherd

-s, --socket=FILE or stdin (-)

lfam says that I should probably create user services to start my vpn service.

He also says that my current user shepherd cannot start, because something is using the default socket file which is

run/user/1000.

So I need to tell shepherd to use a different socket.

He reccomended that I change XDG_RUNTIME_DIR, which is an environmental variable that tells various applications where they can store small files.

#+BEGIN_SRC sh :results output :exports both export XDG_RUNTIME_DIR="$HOME/run"

#+END_SRC

#+BEGIN_SRC sh :results output :exports both shepherd #+END_SRC

#+RESULTS:

Service root has been started.

TODO create a package for guile-dbi-mysql

PROJECT package jmp.chat

    :LOGBOOK:
  • State "TODO" from [2020-08-07 Fri 12:43]
  • :END: :LOGBOOK:
  • State "TODO" from [2020-08-12 Wed 10:53]
  • :END:

PROJECT package sgx-catapult

write my own sgx catapult??

How to package JMP

XMPP server
sgx-catapult I need to package this!

I believe that cheogram controls texting in jmp.chat. Cheogram lets XMPP users use a simple format to chat with SMS users. https://wiki.soprani.ca/SGX JMP texting service is built on XMPP. I need a running XMPP server set up to use JMP.

I definitely need this! sgx-catapult is a doorway from XMPP (Jabber) to SMS (text messages).

The "SGX" stands for "Soprani.ca Gateway to XMPP", as this is associated with the Soprani.ca project.

tai.c

sgx-catapult is written in ruby! This program expects a binary named "tai" to be in its working directory, which should be a compiled version of https://ossguy.com/tai.c for the platform it is running on.

jmp-fwdcalls

jmp-fwdcalls, gets a call from a phone, it then forwards that call onto my SIP account, which I can answer with my SIP client.

relies upon mnemonicode, which generates easy to remember passwords

jmp-fwdcalls lets a landline phone user, talk to a SIP user. https://github.com/singpolyma/mnemonicode

cheogram

This is just C code, which is the ultimate portable programming language! It would be super easy to package in guix! Cheogram does this: It lets your users use a simple format for entering in contacts. +12113114111@cheogram.com instead of +12113114111@example.sgx.soprani.ca

jmp-register

If you don't want to use Cheogram, you will need to replace that code in register[34] before running jmp-register.

This is the registration wizard for jmp. It makes it easy for users to sign up. I may not need this.

set up a jmp.chat service for guix

REFERENCE about the project

Then again I may need it? It sets up a valid Canadian and U.S. phone number.

This app is built in ASP.NET. I know that I can use SMS via ASP.NET.

https://support.microsoft.com/en-us/help/555578

Soprani.ca is an open standard for communication built on XMPP. https://soprani.ca/

I know that my client has an SQL query to get data. He wants his application to respond the result of a query, when the application receives an SMS text message.

It allows for the creation of stable Jabber IDs, for email address and telephone numbers! How cool is it that I can "chat" with an email address? I can use my XMPP account to "chat" with another XMPP account, which forwards my info to an email?

XMPP client issues when using Soprani.ca

https://wiki.soprani.ca/

SMS door to XMPP issues (aka soprani.ca gateway to XMPP)
Soprani.ca plan
Soprani.ca over view of software
SIP standard interchange protocol
SMS provider
    https://wiki.soprani.ca/ClientIssues https://wiki.soprani.ca/SGX https://wiki.soprani.ca/ThePlan There are 4 main source trees that make up JMP currently: jmp-register, jmp-fwdcalls, sgx-catapult, and Cheogram. ********* jmp-register is just for registration stuff - once you've signed up, you won't use it again (unless you choose to pay via PayPal in the automated way available on https://jmp.chat/ ) ********* jmp-fwdcalls is used exclusively for handling inbound calls - it forwards them to the number you've configured, or gives a recorded message saying the number doesn't accept voice calls (as a hack, it also handles the voice verification code) ********* sgx-catapult includes both sgx-catapult.rb and mpx-catapult.rb I NEED THIS ONLY. :LOGBOOK:
  • State "TODO" from [2020-08-15 Sat 11:36]
  • :END: ********** sgx-catapult.rb is the XMPP gateway to my carrier (Catapult) - it translates my carrier's messages into XMPP messages, that can either be handled directly by your XMPP client, or relayed through Cheogram (the latter is now the default with new signups) This translates twilio's text and photo, and video, messages into XMPP messages. ********** mpx-catapult.rb is a basic HTTP proxy that is used exclusively for delivering MMS to an sgx-catapult user - when you access a URL it hosts (which sgx-catapult is configured to send you), then it will fetch the media from Catapult and relay it back to you If my friend posts a picture of him working out and getting ripped, and sends it to me.... My XMPP server, saves the message, and sends me a url. I can view the picture by clicking on the link in my XMPP client. ********* Cheogram is its own XMPP gateway that abstracts away an underlying gateway (such as sgx-catapult) so that you can use @cheogram.com JIDs in your roster and switch to some other gateway later, without changing your roster; it also does other cool things like providing an SMS drop-down while adding a contact (ie. in Gajim) so you can just enter a phone number in whatever format you like and have it convert to the E.164 format plus "@cheogram.com" that Cheogram requires for contacts Cheogram uses a preconfigured sgx-catapult number when it doesn't have a route configured for a given JID - this functionality is currently used primarily by jmp-register for sending the verification codes Like Awebber for text messages. Awebber lets you send mass emails. SMSProviders lets you send mass texts. https://wiki.soprani.ca/SMSProviders
XEP XMPP plugin. It's like secure scuttlebutt for JMP!

ossguy uses Bandwith as his carrier. I could do the same.

vocab

JID is a jabber ID (aka XMPP ID)
MUC (multi user chat)
SMS short message service

https://xmpp.org/extensions/xep-0174.html

This is a text message, but I believe you also call a XMPP "text" message an SMS.

MMS multimedia message service

These can be messages sent from phones, but they can be also be sent from XMPP clients like movim. or pidgin. This is a text message, but I believe that XMPP messages can contain photos. These are usually thought of as coming from a phone, but it could also come from pidgin.

TODO set up gitolite and render org-mode documents via a script like this:

    :LOGBOOK:
  • State "TODO" from [2021-04-04 Sun 09:37]
  • :END:

https://git.cbaines.net/guix/tooling-to-improve-security-and-trust/about/

TODO set up autologin for 1 console only.

    https://paste.debian.net/plain/1192275 :LOGBOOK:
  • State "TODO" from [2021-06-13 Sun 21:43]
  • :END:

As for getting this to work only on TTY1, you do get the config object, so you can do stuff like

(if (is-tty1? config) (inherit+autologin config) config)

Note of course, that is-tty1? is not a procedure that's ready-made, but one that you'd need to build from primitives such as record accessors.

NO consider setting up kmscon, which replaces the linux kernel's virtual console with a userspace one that has more features.

create a gitile gnu guix service. It's rendering git repos on the web via guile.

#+BEGIN_SRC scheme (define %my-desktop-services (modify-services %desktop-services (mingetty-service-type config > (mingetty-configuration (inherit config) ;;auto login as joshua (if (string? "tty1" (mingetty-configuration-tty config)) (auto-login "joshua") (clear-on-logout? #t)))))) #+END_SRC kmscon is no longer developed.

https://git.lepiller.eu/gitile

set up cgit for my personal repos & julian leper's guile web interface.

set up a private git server for my ~/prog/org/projects/ personal projects.

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-git-server-on-a-vps

set up a libre.fm service for GNU Guix! That would be sooo awesome!

https://git.gnu.io/foocorp/librefm/-/wikis/home

check out the guix home script from sourcehut

https://git.gnu.io/foocorp/librefm/-/tree/master/nixtape

https://git.sr.ht/~abcdw/rde/tree/master/item/gnu/README

You don't need to make /home read only.

add a guide in the guix manual that shows what to do when you have fried grub

https://lists.nongnu.org/archive/html/help-guix/2018-02/msg00089.html

https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00001.html

https://lists.gnu.org/archive/html/help-guix/2017-10/msg00035.html

https://lists.gnu.org/archive/html/guix-devel/2018-06/msg00220.html

add a section to the guix cookbook or manual talking about guix environment -m environment.scm

base it on David thompson's blog post https://dthompson.us/reproducible-development-environments-with-gnu-guix.html

add in some section to the guix manual about shepherd services

talk about the (requirement)

#+BEGIN_SRC sh :results output :exports both :dir ~/prog/gnu/guix/guix-src/gnu/services grep -r '(requirement' #+END_SRC

#+RESULTS: #+begin_example spice.scm: (requirement '(udev)) lirc.scm: (requirement '(user-processes)) ganeti.scm: (requirement '(user-processes networking)) ganeti.scm: (requirement '(user-processes networking)) ganeti.scm: (requirement '(user-processes)) ganeti.scm: (requirement '(user-processes)) ganeti.scm: (requirement '(user-processes networking)) ganeti.scm: (requirement '(user-processes)) ganeti.scm: (requirement '(user-processes networking)) ganeti.scm: (requirement '(user-processes networking)) sway.scm: (requirement '(user-processes dbus-system elogind udev virtual-terminal syslogd)) sway.scm: ;;(requirement '(guix-daemon networking)) docker.scm: (requirement '(containerd avahi.scm: (requirement '(user-processes dbus-system networking)) shepherd.scm: (requirement shepherd-service-requirement ;list of symbols shepherd.scm: (for-each (lambda (requirement) shepherd.scm: (requirement shepherd-service-requirement)) shepherd.scm: (fold (lambda (requirement edges) shepherd.scm: (requirement service))) shepherd.scm: (requirement requirements) vpn.scm: (requirement '(networking)) audio.scm: (requirement '(user-processes)) monitoring.scm: (requirement '(networking)) monitoring.scm: (requirement '(networking)) guix.scm: (requirement '(networking)) guix.scm: (requirement '(networking)) guix.scm: (requirement '(networking)) guix.scm: (requirement '(postgres networking)) guix.scm: (requirement '(postgres nix.scm: (requirement '()) mcron.scm: (requirement '(user-processes)) desktop.scm: (requirement '(dbus-system udev)) desktop.scm: (requirement '(dbus-system udev)) desktop.scm: (requirement '(dbus-system)) desktop.scm: (requirement '(udev)) dbus.scm: (requirement '(user-processes syslogd)) nfs.scm: (requirement '(networking)) nfs.scm: (requirement '(rpcbind-daemon rpc-pipefs)) nfs.scm: (requirement '(rpcbind-daemon rpc-pipefs)) nfs.scm: (requirement '(/proc/fs/nfsd rpcbind-daemon)) nfs.scm: (requirement '(/proc/fs/nfsd rpc.statd)) nfs.scm: (requirement '(/proc/fs/nfsd rpc.statd networking)) nfs.scm: (requirement '(/proc/fs/nfsd rpc.nfsd rpc.mountd rpc.statd rpcbind-daemon)) dns.scm: (requirement '(networking)) dns.scm: (requirement '(networking)) dns.scm: (requirement '(user-processes)) dns.scm: (requirement '(networking)) cups.scm: (requirement '(networking)) messaging.scm: (requirement '(networking syslogd user-processes)) messaging.scm: (requirement '(user-processes networking)) messaging.scm: (requirement '(user-processes networking)) syncthing.scm: (requirement '(loopback)) games.scm: (requirement '(networking)) security-token.scm: (requirement '(syslogd)) mail.scm: (requirement '(networking)) mail.scm: (requirement '(loopback)) mail.scm: (requirement '(networking)) mail.scm: (requirement '(networking syslogd)) mail.scm: (requirement '(networking)) linux.scm: (requirement '(file-systems)) getmail.scm: (requirement '(networking)) web.scm: (requirement '(networking)) web.scm: (requirement '(user-processes loopback)) web.scm: (requirement '(networking)) web.scm: (requirement '(networking)) web.scm: (requirement '(networking)) web.scm: (requirement '(networking)) web.scm: (requirement '(postgres)) web.scm: (requirement '(networking)) web.scm: (requirement '(networking)) web.scm: (requirement '(networking)) web.scm: (requirement '(networking)) herd.scm: (requirement live-service-requirement) ;list of symbols sddm.scm: (requirement '(user-processes elogind)) hurd.scm: (requirement '(user-processes)) hurd.scm: (requirement '(user-processes console)) version-control.scm: (requirement '(networking)) xorg.scm: (requirement '(user-processes host-name udev)) xorg.scm: (requirement '(dbus-system user-processes host-name udev)) science.scm: (requirement '(networking)) base.scm: (requirement `(root-file-system udev base.scm: (requirement (cons* 'root-file-system 'user-file-systems base.scm: (requirement '(file-systems udev)) base.scm: (requirement '(udev)) base.scm: (requirement '(root-file-system)) base.scm: (requirement (list (symbol-append 'term- base.scm: (requirement '(user-processes host-name udev)) base.scm: (requirement '(user-processes host-name udev virtual-terminal)) base.scm: (requirement '(user-processes)) base.scm: (requirement '(user-processes)) base.scm: (requirement '(user-processes)) base.scm: (requirement `(user-processes base.scm: (requirement '(root-file-system)) base.scm: (requirement `(udev ,@requirement)) base.scm: (requirement '(udev)) base.scm: (requirement '(user-processes udev dbus-system)) base.scm: (requirement static-networking-requirement base.scm: (requirement requirement) base.scm: (requirement (append-map shepherd-service-provision base.scm: (requirement '(udev)) base.scm: (requirement requirement) base.scm: (requirement '()) databases.scm: (requirement '(user-processes loopback syslogd)) databases.scm: (requirement '(user-processes loopback)) databases.scm: (requirement '(user-processes loopback)) databases.scm: (requirement '(mysql)) databases.scm: (requirement '(user-processes syslogd)) networking.scm: (requirement '(user-processes udev)) networking.scm: (requirement '(networking)) networking.scm: (requirement '(user-processes networking)) networking.scm: (requirement '(user-processes networking)) networking.scm: (requirement '(user-processes networking syslogd)) networking.scm: (requirement '(user-processes loopback syslogd)) networking.scm: (requirement '(user-processes dbus-system loopback)) networking.scm: (requirement '(user-processes dbus-system wpa-supplicant loopback)) networking.scm: (requirement networking.scm: (requirement wpa-supplicant-configuration-requirement ;list of symbols networking.scm: (requirement (if dbus? networking.scm:(define* (hostapd-shepherd-services config #:key (requirement '())) networking.scm: (requirement `(user-processes ,@requirement)) networking.scm: (requirement '(file-systems kernel-module-loader)) networking.scm: (requirement '(ovsdb)) networking.scm: (requirement '(networking)) networking.scm: (requirement '(networking)) networking.scm: (requirement '(loopback)) ssh.scm: (requirement requires) ssh.scm: (requirement '(syslogd loopback)) ssh.scm: (requirement requires) cuirass.scm: (requirement '(guix-daemon networking)) cuirass.scm: (requirement '(guix-daemon networking)) telephony.scm: (requirement '(networking)) pm.scm: (requirement '(user-processes)) authentication.scm: (requirement '(networking user-processes)) dict.scm: (requirement '(user-processes)) virtualization.scm: (requirement '(file-system-/proc/sys/fs/binfmt_misc)) virtualization.scm: (requirement '(loopback networking user-processes)) #+end_example

all an official flatten function for guix maybe in (guix utils)

I think various services re-define the same function. (define (flatten list))

package spam-assassin and make a spam assassin service

spamassassin dependencies https://www.archlinux.org/packages/extra/x86_64/spamassassin/

optional dependancy is http://razor.sourceforge.net/ which is a collaborative email spam filtering program.

openssl perl-crypt-ssleay perl-http-message perl-io-socket-inet6 perl-io-socket-ssl perl-libwww perl-mail-dkim perl-mail-spf perl-net-dns perl-net-http re2c zlib gcc (optional) - to use sa-compile make (optional) - to use sa-compile razor (optional) - to identify collaborately-flagged spam perl-dbi (make) razor (make)

this page also has dependencies https://svn.apache.org/repos/asf/spamassassin/branches/3.4/INSTALL

    One of them is:
  • MIME::Base64

This module is highly recommended to increase the speed with which Base64 encoded messages/mail parts are decoded.

I should also use gcc to run sa-update or sa-install

I may also want to set up a mysql database to store information about spam. BIG email servers can contain 3+ GB of spam info.

FAQs https://cwiki.apache.org/confluence/display/SPAMASSASSIN/FrequentlyAskedQuestions

I can apparently also manually report spam to spamcop. https://www.spamcop.net/

spamassassin's sql readme file https://svn.apache.org/repos/asf/spamassassin/branches/3.4/sql/README

spamd and spamc readme https://svn.apache.org/repos/asf/spamassassin/branches/3.4/spamd/README

package pithos

#+BEGIN_SRC sh :results output :exports both bzip2 -d -c /var/log/guix/drvs/84/9az0wza9g6ddxl3nfriyvq7g4ab3pa-python-pithos-1.5.1.drv.bz2 #+END_SRC

#+RESULTS: #+begin_example WARNING: (guile-user): imported module (guix build utils) overrides core binding `delete' starting phase `set-SOURCE-DATE-EPOCH' phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds starting phase `set-paths' environment variable `PATH' set to `/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/bin:/gnu/store/07iskx8whskggah9x5rkvlfvc6aqs95l-ninja-1.10.0/bin:/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/bin:/gnu/store/zsry93g5d85nrhavnnk1syr7zr7c3fxz-gnome-keyring-3.34.0/bin:/gnu/store/52yy23ymap6829hfxqsd5245alrzxl75-gettext-0.20.1/bin:/gnu/store/hirahvpzx52igjg4z0l4lzfgdfd83bn0-gdk-pixbuf-2.40.0/bin:/gnu/store/v6f44zccwh9z5zk3pjlywjybbi8n2hjh-tar-1.32/bin:/gnu/store/ncydgq2znms5n1d2k5yqshhf58nsixwv-gzip-1.10/bin:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/bin:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/bin:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/bin:/gnu/store/n4n560pfvvw50a9369axw5vj5rrqfj1n-diffutils-3.7/bin:/gnu/store/cd5qf3kcnlq35p9k392pjdpdzpsnds70-patch-2.7.6/bin:/gnu/store/hic7snhayfl7m6cpfqqr73nmm19bpqkg-findutils-4.7.0/bin:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/bin:/gnu/store/ishk7fswcs4gkwcp8mh788z4mvvl9bxh-sed-4.8/bin:/gnu/store/bhs4rj58v8j1narb2454raan2ps38xd8-grep-3.4/bin:/gnu/store/57xj5gcy1jbl9ai2lnrqnpr0dald9i65-coreutils-8.32/bin:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/bin:/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin:/gnu/store/mpa04aq8lblbcviyxywxcsb1zbi0mf39-ld-wrapper-0/bin:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/bin:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/bin:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/sbin:/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/bin:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/bin:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/bin:/gnu/store/gpvwv9nff7k9l9nmyyqi9w9bzc8j0186-shared-mime-info-1.15/bin:/gnu/store/3x2kak8abb6z2klch72kfff2qxzv00pj-libpng-1.6.37/bin:/gnu/store/sh764z2hm5qcr4cqx4amcipcbkvg76i2-libselinux-3.0/sbin:/gnu/store/2hx848pcwl3vfnismziidf85h5h8lnm8-orc-0.4.32/bin:/gnu/store/8nh0hbrr8iaz6qkwavcnzi0824f3xb68-libsepol-3.0/bin' environment variable `GI_TYPELIB_PATH' set to `/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/lib/girepository-1.0:/gnu/store/hirahvpzx52igjg4z0l4lzfgdfd83bn0-gdk-pixbuf-2.40.0/lib/girepository-1.0:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/lib/girepository-1.0:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/lib/girepository-1.0' environment variable `XDG_DATA_DIRS' set to `/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/share:/gnu/store/07iskx8whskggah9x5rkvlfvc6aqs95l-ninja-1.10.0/share:/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/share:/gnu/store/mk5hjvh2gv2j6g4a36c9qkq1ky07brhf-gst-plugins-good-1.16.2/share:/gnu/store/zsry93g5d85nrhavnnk1syr7zr7c3fxz-gnome-keyring-3.34.0/share:/gnu/store/52yy23ymap6829hfxqsd5245alrzxl75-gettext-0.20.1/share:/gnu/store/9c90z4whyp6nkl88xp1s0snx30mzj0pi-gvfs-1.40.1/share:/gnu/store/97cj7schdnkpshic2xv3jikpl47vh6vs-adwaita-icon-theme-3.34.3/share:/gnu/store/pq6y5n37cd7zwnyz5vpjm4fs9hricyk9-python-pylast-2.0.0/share:/gnu/store/hirahvpzx52igjg4z0l4lzfgdfd83bn0-gdk-pixbuf-2.40.0/share:/gnu/store/rmbxm1fg47b347kv1h5fb2w04nxqbsj6-glib-2.62.6/share:/gnu/store/v6f44zccwh9z5zk3pjlywjybbi8n2hjh-tar-1.32/share:/gnu/store/ncydgq2znms5n1d2k5yqshhf58nsixwv-gzip-1.10/share:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/share:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/share:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/share:/gnu/store/n4n560pfvvw50a9369axw5vj5rrqfj1n-diffutils-3.7/share:/gnu/store/cd5qf3kcnlq35p9k392pjdpdzpsnds70-patch-2.7.6/share:/gnu/store/hic7snhayfl7m6cpfqqr73nmm19bpqkg-findutils-4.7.0/share:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/share:/gnu/store/ishk7fswcs4gkwcp8mh788z4mvvl9bxh-sed-4.8/share:/gnu/store/bhs4rj58v8j1narb2454raan2ps38xd8-grep-3.4/share:/gnu/store/57xj5gcy1jbl9ai2lnrqnpr0dald9i65-coreutils-8.32/share:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/share:/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/share:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/share:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/share:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/share:/gnu/store/s3dcqzwqaakv1yx37by9chksdbkgih17-glibc-2.31-static/share:/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/share:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/share:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/share:/gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3/share:/gnu/store/b0svsfz2vw2qwlfsi56k8fwbx4fzcfhk-python-six-1.14.0/share:/gnu/store/gpvwv9nff7k9l9nmyyqi9w9bzc8j0186-shared-mime-info-1.15/share:/gnu/store/3x2kak8abb6z2klch72kfff2qxzv00pj-libpng-1.6.37/share:/gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11/share:/gnu/store/sh764z2hm5qcr4cqx4amcipcbkvg76i2-libselinux-3.0/share:/gnu/store/a45p39mgqvfd8kjwibyr0q42k1mw7gmf-util-linux-2.35.1-lib/share:/gnu/store/k0aqiy7yx8n28dvm3f0a04ka5sd8y950-pcre-8.44/share:/gnu/store/gfapkk5c6hvl1d94m4sqnhn7f9l5gqyh-linux-libre-headers-5.4.20/share:/gnu/store/2hx848pcwl3vfnismziidf85h5h8lnm8-orc-0.4.32/share:/gnu/store/8nh0hbrr8iaz6qkwavcnzi0824f3xb68-libsepol-3.0/share' environment variable `GIO_EXTRA_MODULES' set to `/gnu/store/9c90z4whyp6nkl88xp1s0snx30mzj0pi-gvfs-1.40.1/lib/gio/modules' environment variable `BASH_LOADABLES_PATH' unset environment variable `C_INCLUDE_PATH' set to `/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/include:/gnu/store/52yy23ymap6829hfxqsd5245alrzxl75-gettext-0.20.1/include:/gnu/store/9c90z4whyp6nkl88xp1s0snx30mzj0pi-gvfs-1.40.1/include:/gnu/store/mfdaam1wr23b4xhvn42na48y02smw4jr-python-pygobject-3.34.0/include:/gnu/store/hirahvpzx52igjg4z0l4lzfgdfd83bn0-gdk-pixbuf-2.40.0/include:/gnu/store/rmbxm1fg47b347kv1h5fb2w04nxqbsj6-glib-2.62.6/include:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/include:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/include:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/include:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/include:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/include:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/include:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/include:/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/include:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/include:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/include:/gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3/include:/gnu/store/3x2kak8abb6z2klch72kfff2qxzv00pj-libpng-1.6.37/include:/gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11/include:/gnu/store/sh764z2hm5qcr4cqx4amcipcbkvg76i2-libselinux-3.0/include:/gnu/store/a45p39mgqvfd8kjwibyr0q42k1mw7gmf-util-linux-2.35.1-lib/include:/gnu/store/k0aqiy7yx8n28dvm3f0a04ka5sd8y950-pcre-8.44/include:/gnu/store/gfapkk5c6hvl1d94m4sqnhn7f9l5gqyh-linux-libre-headers-5.4.20/include:/gnu/store/2hx848pcwl3vfnismziidf85h5h8lnm8-orc-0.4.32/include:/gnu/store/8nh0hbrr8iaz6qkwavcnzi0824f3xb68-libsepol-3.0/include' environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/include:/gnu/store/52yy23ymap6829hfxqsd5245alrzxl75-gettext-0.20.1/include:/gnu/store/9c90z4whyp6nkl88xp1s0snx30mzj0pi-gvfs-1.40.1/include:/gnu/store/mfdaam1wr23b4xhvn42na48y02smw4jr-python-pygobject-3.34.0/include:/gnu/store/hirahvpzx52igjg4z0l4lzfgdfd83bn0-gdk-pixbuf-2.40.0/include:/gnu/store/rmbxm1fg47b347kv1h5fb2w04nxqbsj6-glib-2.62.6/include:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/include:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/include:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/include:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/include:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/include:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/include:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include/c++:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/include:/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/include:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/include:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/include:/gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3/include:/gnu/store/3x2kak8abb6z2klch72kfff2qxzv00pj-libpng-1.6.37/include:/gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11/include:/gnu/store/sh764z2hm5qcr4cqx4amcipcbkvg76i2-libselinux-3.0/include:/gnu/store/a45p39mgqvfd8kjwibyr0q42k1mw7gmf-util-linux-2.35.1-lib/include:/gnu/store/k0aqiy7yx8n28dvm3f0a04ka5sd8y950-pcre-8.44/include:/gnu/store/gfapkk5c6hvl1d94m4sqnhn7f9l5gqyh-linux-libre-headers-5.4.20/include:/gnu/store/2hx848pcwl3vfnismziidf85h5h8lnm8-orc-0.4.32/include:/gnu/store/8nh0hbrr8iaz6qkwavcnzi0824f3xb68-libsepol-3.0/include' environment variable `LIBRARY_PATH' set to `/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib:/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/lib:/gnu/store/mk5hjvh2gv2j6g4a36c9qkq1ky07brhf-gst-plugins-good-1.16.2/lib:/gnu/store/zsry93g5d85nrhavnnk1syr7zr7c3fxz-gnome-keyring-3.34.0/lib:/gnu/store/52yy23ymap6829hfxqsd5245alrzxl75-gettext-0.20.1/lib:/gnu/store/9c90z4whyp6nkl88xp1s0snx30mzj0pi-gvfs-1.40.1/lib:/gnu/store/mfdaam1wr23b4xhvn42na48y02smw4jr-python-pygobject-3.34.0/lib:/gnu/store/pq6y5n37cd7zwnyz5vpjm4fs9hricyk9-python-pylast-2.0.0/lib:/gnu/store/hirahvpzx52igjg4z0l4lzfgdfd83bn0-gdk-pixbuf-2.40.0/lib:/gnu/store/rmbxm1fg47b347kv1h5fb2w04nxqbsj6-glib-2.62.6/lib:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/lib:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/lib:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/lib:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/lib:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/lib:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib:/gnu/store/s3dcqzwqaakv1yx37by9chksdbkgih17-glibc-2.31-static/lib:/gnu/store/hwcky7446s952w0mwchhmm211ll07zrq-glibc-utf8-locales-2.31/lib:/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/lib:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/lib:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/lib:/gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3/lib:/gnu/store/b0svsfz2vw2qwlfsi56k8fwbx4fzcfhk-python-six-1.14.0/lib:/gnu/store/3x2kak8abb6z2klch72kfff2qxzv00pj-libpng-1.6.37/lib:/gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11/lib:/gnu/store/sh764z2hm5qcr4cqx4amcipcbkvg76i2-libselinux-3.0/lib:/gnu/store/a45p39mgqvfd8kjwibyr0q42k1mw7gmf-util-linux-2.35.1-lib/lib:/gnu/store/k0aqiy7yx8n28dvm3f0a04ka5sd8y950-pcre-8.44/lib:/gnu/store/2hx848pcwl3vfnismziidf85h5h8lnm8-orc-0.4.32/lib:/gnu/store/8nh0hbrr8iaz6qkwavcnzi0824f3xb68-libsepol-3.0/lib' environment variable `GUIX_LOCPATH' set to `/gnu/store/hwcky7446s952w0mwchhmm211ll07zrq-glibc-utf8-locales-2.31/lib/locale' environment variable `PYTHONPATH' set to `/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages:/gnu/store/mfdaam1wr23b4xhvn42na48y02smw4jr-python-pygobject-3.34.0/lib/python3.8/site-packages:/gnu/store/pq6y5n37cd7zwnyz5vpjm4fs9hricyk9-python-pylast-2.0.0/lib/python3.8/site-packages:/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/lib/python3.8/site-packages:/gnu/store/b0svsfz2vw2qwlfsi56k8fwbx4fzcfhk-python-six-1.14.0/lib/python3.8/site-packages' environment variable `GST_PLUGIN_SYSTEM_PATH' set to `/gnu/store/0551m6dq04cb8nz88m3a2gz17rrdmm3j-gst-plugins-bad-1.16.2/lib/gstreamer-1.0:/gnu/store/mk5hjvh2gv2j6g4a36c9qkq1ky07brhf-gst-plugins-good-1.16.2/lib/gstreamer-1.0:/gnu/store/b0zr78p60f71ys70wil388csks85k8i4-gst-plugins-base-1.16.2/lib/gstreamer-1.0:/gnu/store/l7g41acdyynjqrc2b8ikwzzvr09ni6ia-gstreamer-1.16.2/lib/gstreamer-1.0' phase `set-paths' succeeded after 0.1 seconds starting phase `install-locale' using 'en_US.utf8' locale for category "LC_ALL" phase `install-locale' succeeded after 0.0 seconds starting phase `unpack' pithos-1.5.1/ pithos-1.5.1/.editorconfig pithos-1.5.1/.github/ pithos-1.5.1/.github/FUNDING.yml pithos-1.5.1/.gitignore pithos-1.5.1/README.md pithos-1.5.1/bin/ pithos-1.5.1/bin/meson.build pithos-1.5.1/bin/pithos.in pithos-1.5.1/data/ pithos-1.5.1/data/gtk/ pithos-1.5.1/data/gtk/help-overlay.ui pithos-1.5.1/data/icons/ pithos-1.5.1/data/icons/hicolor/ pithos-1.5.1/data/icons/hicolor/48x48/ pithos-1.5.1/data/icons/hicolor/48x48/apps/ pithos-1.5.1/data/icons/hicolor/48x48/apps/io.github.Pithos-tray.png pithos-1.5.1/data/icons/hicolor/scalable/ pithos-1.5.1/data/icons/hicolor/scalable/apps/ pithos-1.5.1/data/icons/hicolor/scalable/apps/io.github.Pithos-tray.svg pithos-1.5.1/data/icons/hicolor/scalable/apps/io.github.Pithos.svg pithos-1.5.1/data/icons/hicolor/symbolic/ pithos-1.5.1/data/icons/hicolor/symbolic/apps/ pithos-1.5.1/data/icons/hicolor/symbolic/apps/io.github.Pithos-symbolic.svg pithos-1.5.1/data/icons/meson.build pithos-1.5.1/data/icons/ubuntu-mono-dark/ pithos-1.5.1/data/icons/ubuntu-mono-dark/16x16/ pithos-1.5.1/data/icons/ubuntu-mono-dark/16x16/apps/ pithos-1.5.1/data/icons/ubuntu-mono-dark/16x16/apps/io.github.Pithos-tray.svg pithos-1.5.1/data/icons/ubuntu-mono-light/ pithos-1.5.1/data/icons/ubuntu-mono-light/16x16/ pithos-1.5.1/data/icons/ubuntu-mono-light/16x16/apps/ pithos-1.5.1/data/icons/ubuntu-mono-light/16x16/apps/io.github.Pithos-tray.svg pithos-1.5.1/data/io.github.Pithos.appdata.xml.in pithos-1.5.1/data/io.github.Pithos.desktop.in pithos-1.5.1/data/io.github.Pithos.gresource.xml pithos-1.5.1/data/io.github.Pithos.gschema.xml pithos-1.5.1/data/io.github.Pithos.service.in pithos-1.5.1/data/meson.build pithos-1.5.1/data/ui/ pithos-1.5.1/data/ui/AboutPithosDialog.ui pithos-1.5.1/data/ui/EqDialog.ui pithos-1.5.1/data/ui/PithosWindow.ui pithos-1.5.1/data/ui/PreferencesPithosDialog.ui pithos-1.5.1/data/ui/SearchDialog.ui pithos-1.5.1/data/ui/StationsDialog.ui pithos-1.5.1/docs/ pithos-1.5.1/docs/conf.py pithos-1.5.1/docs/index.rst pithos-1.5.1/docs/meson.build pithos-1.5.1/docs/pithos.1 pithos-1.5.1/license pithos-1.5.1/meson.build pithos-1.5.1/meson_post_install.py pithos-1.5.1/pithos/ pithos-1.5.1/pithos/AboutPithosDialog.py pithos-1.5.1/pithos/PreferencesPithosDialog.py pithos-1.5.1/pithos/SearchDialog.py pithos-1.5.1/pithos/StationsDialog.py pithos-1.5.1/pithos/StationsPopover.py pithos-1.5.1/pithos/__init__.py pithos-1.5.1/pithos/__main__.py pithos-1.5.1/pithos/application.py pithos-1.5.1/pithos/gi_composites.py pithos-1.5.1/pithos/gobject_worker.py pithos-1.5.1/pithos/migrate_settings.py pithos-1.5.1/pithos/pandora/ pithos-1.5.1/pithos/pandora/__init__.py pithos-1.5.1/pithos/pandora/blowfish.py pithos-1.5.1/pithos/pandora/data.py pithos-1.5.1/pithos/pandora/fake.py pithos-1.5.1/pithos/pandora/pandora.py pithos-1.5.1/pithos/pithos.py pithos-1.5.1/pithos/plugin.py pithos-1.5.1/pithos/plugins/ pithos-1.5.1/pithos/plugins/10_band_equalizer.py pithos-1.5.1/pithos/plugins/__init__.py pithos-1.5.1/pithos/plugins/auto_volume_normalization.py pithos-1.5.1/pithos/plugins/dbus_util/ pithos-1.5.1/pithos/plugins/dbus_util/DBusServiceObject.py pithos-1.5.1/pithos/plugins/inhibit_screensaver.py pithos-1.5.1/pithos/plugins/journald_logging.py pithos-1.5.1/pithos/plugins/lastfm.py pithos-1.5.1/pithos/plugins/mediakeys.py pithos-1.5.1/pithos/plugins/mpris.py pithos-1.5.1/pithos/plugins/notification_icon.py pithos-1.5.1/pithos/plugins/notify.py pithos-1.5.1/pithos/plugins/screensaver_pause.py pithos-1.5.1/pithos/util.py pithos-1.5.1/po/ pithos-1.5.1/po/LINGUAS pithos-1.5.1/po/POTFILES pithos-1.5.1/po/meson.build pithos-1.5.1/setup.cfg pithos-1.5.1/zanata.xml phase `unpack' succeeded after 0.1 seconds starting phase `patch-usr-bin-file' phase `patch-usr-bin-file' succeeded after 0.0 seconds starting phase `patch-source-shebangs' patch-shebang: ./bin/pithos.in: changing `/usr/bin/env python3' to `/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/bin/python3' patch-shebang: ./docs/conf.py: changing `/usr/bin/env python3' to `/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/bin/python3' patch-shebang: ./meson_post_install.py: changing `/usr/bin/env python3' to `/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/bin/python3' phase `patch-source-shebangs' succeeded after 0.0 seconds starting phase `configure' Traceback (most recent call last): File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/mesonmain.py", line 129, in run return options.run_func(options) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/msetup.py", line 245, in run app.generate() File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/msetup.py", line 159, in generate self._generate(env) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/msetup.py", line 192, in _generate intr.run() File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreter.py", line 4167, in run super().run() File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 412, in run self.evaluate_codeblock(self.ast, start=1) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 436, in evaluate_codeblock raise e File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 430, in evaluate_codeblock self.evaluate_statement(cur) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 441, in evaluate_statement return self.function_call(cur) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 788, in function_call return func(node, posargs, kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 285, in wrapped return f(*wrapped_args, **wrapped_kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 174, in wrapped return f(*wrapped_args, **wrapped_kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreter.py", line 3689, in func_subdir self.evaluate_codeblock(codeblock) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 436, in evaluate_codeblock raise e File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 430, in evaluate_codeblock self.evaluate_statement(cur) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 443, in evaluate_statement return self.assignment(cur) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 1064, in assignment value = self.evaluate_statement(node.value) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 445, in evaluate_statement return self.method_call(cur) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 828, in method_call return obj.method_call(method_name, args, kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreter.py", line 1756, in method_call value = fn(state, args, kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 285, in wrapped return f(*wrapped_args, **wrapped_kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/interpreterbase.py", line 174, in wrapped return f(*wrapped_args, **wrapped_kwargs) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/modules/gnome.py", line 145, in compile_resources depend_files, depends, subdirs = self._get_gresource_dependencies( File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/modules/gnome.py", line 229, in _get_gresource_dependencies pc, stdout, stderr = Popen_safe(cmd, cwd=state.environment.get_source_dir()) File "/gnu/store/9m03qg3zrcfr3sxmr5592vkaa4p33sci-meson-for-build-0.53.2/lib/python3.8/site-packages/mesonbuild/mesonlib.py", line 1089, in Popen_safe p = subprocess.Popen(args, universal_newlines=True, close_fds=False, File "/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/lib/python3.8/subprocess.py", line 854, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/lib/python3.8/subprocess.py", line 1702, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'glib-compile-resources' The Meson build system Version: 0.53.2 Source dir: /tmp/guix-build-python-pithos-1.5.1.drv-0/pithos-1.5.1 Build dir: /tmp/guix-build-python-pithos-1.5.1.drv-0/build Build type: native build Project name: pithos Project version: 1.5.1 Host machine cpu family: x86_64 Host machine cpu: x86_64 Configuring io.github.Pithos.service using configuration Did not find pkg-config by name 'pkg-config' Found Pkg-config: NO WARNING: Could not detect glib version, assuming 2.54. You may get build errors if your glib is older. command "meson" "--prefix=/gnu/store/afq5641mvdd3lrd7sp4827slgmrf9ap3-python-pithos-1.5.1" "--buildtype=debugoptimized" "-Dc_link_args=-Wl,-rpath=/gnu/store/afq5641mvdd3lrd7sp4827slgmrf9ap3-python-pithos-1.5.1/lib" "-Dcpp_link_args=-Wl,-rpath=/gnu/store/afq5641mvdd3lrd7sp4827slgmrf9ap3-python-pithos-1.5.1/lib" "/tmp/guix-build-python-pithos-1.5.1.drv-0/pithos-1.5.1" failed with status 2 #+end_example

set up a user ssh-agent

Because ssh-agents are awesome.

https://wiki.archlinux.org/index.php/SSH_keys#SSH_agents https://stackoverflow.com/questions/18880024/start-ssh-agent-on-login

#+BEGIN_SRC sh :results output :exports both

# set up my ssh-agent if ! pgrep -u "$USER" ssh-agent > /dev/null; then ssh-agent > "$XDG_RUNTIME_DIR/ssh-agent.env" fi if ! "$SSH_AUTH_SOCK" ; then source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null fi

fix tiny compile errors in guix

[ 12%] LOAD guix/scripts/repl.scm

[ 55%] GUILEC guix/diagnostics.go

[ 55%] GUILEC guix/ui.go

[ 56%] GUILEC guix/status.go

set up mail on my guix server

try to use msmtp to send email via tor

#+END_SRC WARNING: Use of `load' in declarative module (guix scripts repl). Add #:declarative? #f to your define-module invocation. guix/diagnostics.scm:304:9: warning: non-literal format string WARNING: Use of `load' in declarative module (guix ui). Add #:declarative? #f to your define-module invocation. guix/status.scm:568:5: warning: non-literal format string guix/status.scm:561:5: warning: non-literal format string guix/status.scm:563:5: warning: non-literal format string guix/status.scm:556:5: warning: non-literal format string guix/status.scm:553:7: warning: non-literal format string guix/status.scm:528:5: warning: non-literal format string guix/status.scm:524:7: warning: non-literal format string guix/status.scm:512:5: warning: non-literal format string guix/status.scm:519:8: warning: non-literal format string guix/status.scm:516:8: warning: non-literal format string guix/status.scm:500:7: warning: non-literal format string guix/status.scm:495:10: warning: non-literal format string guix/status.scm:491:25: warning: non-literal format string guix/status.scm:492:16: warning: non-literal format string guix/status.scm:483:12: warning: non-literal format string guix/status.scm:475:13: warning: non-literal format string https://framagit.org/tyreunom/system-configuration/-/blob/master/modules/config/mail.scm

write a guide to tell people how to install guix system on digital ocean

https://marlam.de/msmtp/msmtp.html#Using-msmtp-with-Tor

And it shows me how to install guix system on digital ocean!

https://wiki.pantherx.org/Installation-digital-ocean/

https://f-a.nz/dev/guixsd-on-digitalocean/

https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00139.html

use guile udev ANNGuile-Udev 0.1.0 released]]

when reconfiguring nginx, there ought to be a warning, body does not end in ";".

to get my headphone/microphone to work properly.

#+BEGIN_SRC scheme (nginx-location-configuration (uri "~* form/css.+\\.css$") ;; I forgot a colon at the end of this line. (body '("root /home/joshua/prog/guile/form/css/"))) #+END_SRC

The above nginx configuration will cause nginx to fail to start, because the filepath needs to have a colon at the end.

package nginx regular expression tester:

set up prosody server on gnucode.me

https://www.nginx.com/blog/regular-expression-tester-nginx/

I sort of have it set up so far.

It looks like I'll need to apply an certbot hook, to re-import a new certificate, everytime certbot updates my certificate.

start the childhurd to use the e1000 network device

https://prosody.im/doc/letsencrypt Richard Braun, le ven. 28 août 2020 18:33:03 +0200, a ecrit: > On Sat, Aug 15, 2020 at 06:51:27PM +0200, Jan Wielkiewicz wrote: > > Also navigation is too complicated and messy, searching doesn't work at > > all, because https://darnassus.sceen.net/cgi-bin/hurd-web is dead half > > of the time. > > Any special wishes? > > By the way, the main reason why that website is so often unreachable is > netdde freezing. I've restored an old trick I used in the past to mitigate > the problem, which is merely a cron script that kills it every hour. > > If you want that to improve, someone will have to hunt that bug down.

One way to avoid the bug is to use the e1000 hardware network type. I guess the rtl8139 driver that we ship in netdde has a bug in its irq handling (we had already seen that kind of bug a long time ago in the IDE driver). Moving to rump-based network drivers will probably help fixing this kind of issue long-term :)

create a config file for termite, and let guix install the file for me.

Essentially, I want to create a config file for termite, to specify to use the ubuntu font and to make the font size a little bigger. I also want to store some scheme code to create this file, that way, if I reconfigure, I'll still have the settings saved.

I'll probably end of needing gnu/system/accounts.scm for this.

I may also need gnu/system/shadow.scm for this.

file a bug report for termite...occasionally termite confuses "backspace" for space in guix environment

I could use "skeletons" for this. But it would apply my change for ANY new user, not just me.

set up and install guix so that my harddrives are encrypted and a have ram 1 or 0, the way where files are duplicated

try out and test guix home manager

update guix deploy

The fix seems to run 'export TERM=linux' in the guix environment https://github.com/pmeiyu/guix-config https://gitlab.com/rain1/guix-wiki/-/wikis/encrypted-home-config.scm https://framagit.org/tyreunom/guix-home-manager info:guix#Invoking guix deploy

Mention that host-key is usually found in /etc/ssh, and the file usually ends in ".pub".

updating sway to sway 1.5

This is already an open bug 42695

https://github.com/swaywm/sway/releases

https://github.com/swaywm/wlroots/releases

https://github.com/swaywm/wlroots/blob/master/meson.build

I have to package meson 0.54.0...guix has 0.53.2

I need to package wlroots 0.11.0

I need to update sway from 1.4 to 1.5

try installing a more recent firefox release with flatpak

admittedly, the nix-service-type has firefox 74 right now, which is not bad...

But the later version of firefox may be more "secure".

https://flathub.org/apps/details/org.mozilla.firefox

https://9to5linux.com/firefox-now-has-an-official-flatpak-app-heres-how-to-install-it

#+BEGIN_SRC sh :results output :exports both flatpak run --user org.mozilla.firefox #+END_SRC

flatpak override --user --env=MOZ_ENABLE_WAYLAND=1 org.mozilla.firefox

get firefox flatpak to run on wayland instead of X

I'll need to install these packages for it to work:

#+BEGIN_SRC sh :results output :exports both guix package -i flatpak xdg-desktop-portal xdg-desktop-portal-gtk #+END_SRC

If running sway,

I'll also need to run dbus-run-session sway, which makes sway run sooo much smoother! No idea why.

Add the "--user" options to run each flatpak command as the current regular user. If you omit the "--user" option, flatpak will give you permissions errors. In that case you can probably run the command as sudo.

#+BEGIN_SRC sh :results output :exports both cat ~/.bash_profile #+END_SRC

#+RESULTS: #+begin_example # Honor per-interactive-shell startup file if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

# shepherd

if -z $DISPLAY && $(tty) = /dev/tty1 ; then # this is needed to run firefox on wayland export MOZ_ENABLE_WAYLAND=1 exec dbus-run-session sway dbus-run-session sway fi

shepherd -c ~/.config/shepherd/init.scm #+end_example

create the directories needed for flatpak

#+BEGIN_SRC sh :results output :exports both mkdir -p var/lib/flatpak/exports/share mkdir -p ~.local/share/flatpak/exports/share #+END_SRC

#+RESULTS:

#+BEGIN_SRC sh :results output :exports both ls ~/.local/share/flatpak ls ~/.local/share/flatpak/share #+END_SRC

#+RESULTS:

This command installs the flathub repository so that only the regular user that runs this command, can access the programs flatpak installs. #+BEGIN_SRC sh :results output :exports both flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo #+END_SRC

#+RESULTS:

package brave browser

Set proper environmental variables

https://github.com/brave/brave-browser/wiki/Linux-Development-Environment https://chromium.googlesource.com/chromium/src/+/master/docs/linux/build_instructions.md#System-requirements https://brave-browser.readthedocs.io/en/latest/installing-brave.html#linux

#+BEGIN_SRC sh :results output :exports both Note that the directories

'/var/lib/flatpak/exports/share' '/home/joshua/.local/share/flatpak/exports/share'

are not in the search path set by the XDG_DATA_DIRS environment variable, so applications installed by Flatpak may not appear on your desktop until the session is restarted. #+END_SRC

#+BEGIN_SRC sh :results output :exports both echo $XDG_DATA_DIRS #+END_SRC

#+RESULTS:

/gnu/store/gb2v82aflbxjbq1rkgb56xd07f3s01x3-shared-mime-info-1.10/share:/gnu/store/b8pr2k0i2zd07zmb7kpffmcimqi337if-glib-2.60.6/share:/gnu/store/lm3griq0smrnb019wy4517rkll5biqnq-gtk+-3.24.14/share:/gnu/store/frhq807simx67vabbrxnf7al9d96xz54-jmacs-26.3/share:/gnu/store/gb2v82aflbxjbq1rkgb56xd07f3s01x3-shared-mime-info-1.10/share:/gnu/store/b8pr2k0i2zd07zmb7kpffmcimqi337if-glib-2.60.6/share:/gnu/store/lm3griq0smrnb019wy4517rkll5biqnq-gtk+-3.24.14/share:/gnu/store/frhq807simx67vabbrxnf7al9d96xz54-jmacs-26.3/share:/gnu/store/j6gvzm9waf4yhlzv7s15jk39wn0sr50s-shared-mime-info-1.15/share:/gnu/store/xa1vfhfc42x655hi7vxqmbyvwldnz7r0-glib-2.62.6/share:/gnu/store/4rjf9bkzqyxwf2nx984dgcjqc94qivac-gtk+-3.24.20/share:/home/joshua/.guix-profile/share:/run/current-system/profile/share:/home/joshua/.guix-profile/share:/run/current-system/profile/share

#+BEGIN_SRC sh :results output :exports both cat ~/.bash_profile #+END_SRC

#+RESULTS: #+begin_example # Honor per-interactive-shell startup file if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

# shepherd

if -z $DISPLAY && $(tty) = /dev/tty1 ; then export MOZ_ENABLE_WAYLAND=1 exec dbus-run-session sway XDG_DATA_DIRS=/var/lib/flatpak/exports/share:/home/joshua/.local/share/flatpak/exports/share:$XDG_DATA_DIRS fi

shepherd -c ~/.config/shepherd/init.scm #+end_example

command to run the flatpak

#+BEGIN_SRC sh :results output :exports both flatpak run org.mozilla.firefox #+END_SRC

simple service to start my vpn

bugs I might be able to fix

Shepherd

Shepherd not properly restarting dependent services

xfce documentation not available locally

icecat mailto does not work?

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23170 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23199

add in the guix manual that "make check" also runs make. No need for make install

can I set up emacs optional dependencies

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24066

Emacs Dependencies for 26.3 http://www.linuxfromscratch.org/blfs/view/svn/postlfs/emacs.html

emacs's package definition says that I can add in optional dependencies.

Optional

  • [X] giflib-5.2.1
  • [X] GnuTLS-3.6.14
  • [X] LibTIFF-4.1.0
  • [X] X Window System
  • [X] alsa-lib-1.2.3.2
  • [X] dbus-1.12.20
  • [ ] GConf-3.2.6
  • [ ] gobject-introspection-1.64.1
  • [ ] gsettings-desktop-schemas-3.36.1
  • [ ] GPM-1.20.7
  • [X] GTK+-2.24.32 or GTK+-3.24.21
  • [X] ImageMagick-6.9.10-93 libraries (see command explanations)
  • [X] libjpeg-turbo-2.0.5
  • [X] libpng-1.6.37
  • [X] librsvg-2.48.8
  • [X] libxml2-2.9.10
  • [ ] MIT Kerberos V5-1.18.2
  • [ ] Valgrind-3.16.1
  • [ ] intlfonts
  • [ ] libungif
  • [ ] libotf and m17n-lib - to correctly display such complex scripts as Indic and Khmer, and also for scripts that require Arabic shaping support (Arabic and Farsi), and libXaw3d

I can package my emacs config and make it install emacs packages but not have those packages in my profile

I can use guile-git to clone my emacs config and set it in a directory.

Here are the three main guile procedures that I'll need to use:

The module ‘git bindings’ provide several definitions for interacting with libgit2. The main procedure is ‘libgit2-init!’ which must be called before any other guile-git procedure is called.

-- Scheme Procedure: libgit2-init! Return the number of initializations of libgit2 or an error code.

Initializes the global state of libgit2. The procedure must be called before any other procedure is called and may be called multiple times.

-- Scheme Procedure: clone url directory Return a repository by cloning a remote git repository found at URL into DIRECTORY or throws an error.

-- Scheme Procedure: libgit2-shutdown! Return the number of remaining initializations of libgit2 or an error code.

The procedure cleans up the global state of libgit2 created by ‘libgit2-init!’.

bspwm

helping with core-updates

joshuaBPMan: i think you want those to be in propagated-inputs, not native-inputs [18:13] native-inputs are build-time dependencies [18:14] pkill9: oh. well I'll try that again then. haha. [18:17] pkill9: It would be nice to have those installed in such a way that emacs can access the packages, but not populate my profile. [18:19] I guess that isn't possible. it is possible, you can create a package that is a wrapper script that runs emacs with command line options [18:20] i did that with bspwm pkill9: thanks. I'll look into that! [18:21] although with that one I created a makefile that handles wrapping it but you can write files in the guix package definition joshuaBPMan: Also you could use separate guix profile instead of wrapping. Most of guix commands has a ‘-p’ command option. [18:24] wigust: hmmm. does that mean I'd have package "myemacs" to install a separate profile containing all of the emacs packages, and then create a script that runs "myemacs" to pull in the emacs packages from the separate profile? [18:25]

Every now and then guix, does some pretty big updates. It changes a lot. I can pull from that branch and test the changes.

What remains to be done is mostly (1) ensuring that there’s no significant regression in terms of build failures compared to ‘master’, and (2) making sure GuixSD boots and works fine.

For #1, a simple test is to try and upgrade your profile and see if everything builds and works well. In addition, you can look at these dashboards to identify build failures that need to be addressed:

https://hydra.gnu.org/jobset/gnu/core-updates https://berlin.guixsd.org/jobset/core-updates-core-updates

make icecat run in a container https://lists.gnu.org/archive/html/help-guix/2018-01/msg00109.html

(users (name joshua) (layout "dvorak"))

For #2, running “make check-system”, or at least the inexpensive subset of system tests (the expensive tests are the installation tests) should give a good overview—Mark already reported an issue at . The next step of course is to try it on the bare metal for your own system config.

What is the kmscon service?

The system reconfigure module is here.

This is the variable for user services called operating-system-user-services. here

It is populated here. Or is that just the type?

What is a scheme record type? It is kind of like a class, but not quite...

this returns all OS services, even the internal ones.

DONE change the grub layout

    Activation helpers are here: to create default files [[file:~/prog/gnu/guix/gnu/build/activation.scm::;;;%20Commentary:]] CLOSED: [2020-08-09 Sun 11:29] :LOGBOOK:
  • State "DONE" from [2020-08-09 Sun 11:29]
  • :END:

I'm using libreboot. Libreboot sets the grub layout for me.

change the initrd solution

This page has the info that lets you change the layout so that you can still use dvorak even when you are using an encrypt filesystem!

https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Manual_configuration_of_core_image_for_early_boot

:archWikiAnswer: Manual configuration of core image for early boot

If you require a special keymap or other complex steps that GRUB is not able to configure automatically in order to make /boot available to the GRUB environment, you can generate a core image yourself. On UEFI systems, the core image is the grubx64.efi file that is loaded by the firmware on boot. Building your own core image will allow you to embed any modules required for very early boot, as well as a configuration script to bootstrap GRUB.

Firstly, taking as an example a requirement for the dvorak keymap embedded in early-boot in order to enter a password for a crypted /boot on a UEFI system:

Determine from the generated /boot/grub/grub.cfg file what modules are required in order to mount the crypted /boot. For instance, under your menuentry you should see lines similar to:

insmod diskfilter cryptodisk luks gcry_rijndael gcry_rijndael gcry_sha256 insmod ext2 cryptomount -u 1234abcdef1234abcdef1234abcdef set root='cryptouuid/1234abcdef1234abcdef1234abcdef'

Take note of all of those modules: they'll need to be included in the core image. Now, create a tarball containing your keymap. This will be bundled in the core image as a memdisk:

Now create a configuration file to be used in the GRUB core image. This is in the same format as your regular grub config, but need contain only a few lines to find and load the main config file on the /boot partition:

early-grub.cfg root=(memdisk) prefix=($root)/

terminal_input at_keyboard keymap /dvorak.gkb

cryptomount -u 1234abcdef1234abcdef1234abcdef set root='cryptouuid/1234abcdef1234abcdef1234abcdef' set prefix=($root)/grub

configfile grub.cfg

Finally, generate the core image, listing all of the modules determined to be required in the generated grub.cfg, along with any modules used in the early-grub.cfg script. The example above needs memdisk, tar, at_keyboard, keylayouts and configfile.

The generated EFI core image can now be used in the same way as the image that is generated automatically by grub-install: place it in your EFI partition and enable it with efibootmgr, or configure as appropriate for your system firmware.

A mailing list discussion that recommends building a custom initrd

:END: As far as my experience with other Operating Systems goes: we need to make the keyboard layout configurable in the initrd. You can already achieve this with a custom initrd today, but having a service would be more convenient. For expected defaults we should make this hypothetical service default to en-us. I see two possible entry points to writing the service here:

1) extending the console-keymap-service 2) writing a new service that extends the initrd and reuses code from the previously mentioned service.

the guixSD way of doing it:

It is possible to add init modules here: info:guix#operating-system Reference

The easy way to do this is: changing the %base-initrd-modules.

The actual best way to do it, is to build a custom initrd via the base-initrd, or raw-initrd, or expression->initrd procedures and specify which initrd to use via the "initrd" field in the operating system.

grub-xbdcomp isn't working!


sudo grub-kbdcomp -o /boot/grub/dvorak.gkb dvorak
/home/joshua/.guix-profile/bin/grub-kbdcomp: line 76: ckbcomp: command not found
ERROR: no valid keyboard layout found. Check the input.

Generate a GRUB keyboard layout file. Below is the command for a french keyboard.

For other languages, check usr/share/X11/xkb/symbols. Filename

choice is not important (you can change bepo).

sudo grub-kbdcomp -o /boot/grub/bepo.gkb fr

Edit /etc/default/grub with root rights to have:

#GRUB_HIDDEN_TIMEOUT=0 GRUB_TERMINAL_INPUT="at_keyboard"

Edit /etc/grub.d/40_custom with root rights to have:

#!/bin/sh exec tail -n +3 $0

insmod keylayouts keymap /boot/grub/bepo.gkb

Finally:

sudo update-grub

DONE change the console layout

change the initrd layout

use this guile script to generate a manifest

    Note: Forget immediately about using the Shift key to display GRUB menu! It may be normal that terminal_input at_keyboard make this key not work anymore. So make sure #GRUB_HIDDEN_TIMEOUT=0 is properly commented. CLOSED: [2020-08-09 Sun 11:29] :LOGBOOK:
  • State "DONE" from [2020-08-09 Sun 11:29]
  • :END:

(use-modules (guix profiles) (ice-9 match) (ice-9 pretty-print))

(match (command-line) ((_ where) (pretty-print `(specifications->manifest ',(map manifest-entry-name (manifest-entries (profile-manifest where)))))) (_ (error "Please provide the path to a Guix profile.")))

use some proxies!

https://wiki.archlinux.org/index.php/Using_a_SOCKS_proxy

I can set up wget to use tor with an environmental variables!

report a bug in Icecat's Tor browser.

https://wiki.archlinux.org/index.php/Proxy_routing_with_Tor_and_Privoxy

It looks like I have to manually go to preferences

search proxy, click on setting

Then click on proxy DNS when using SOCKS v5

Email from Mike Gerwitz: Re: Problem with Tor & IceCat

Or maybe not...This guy apparently filed the bug report already. Email from znavko: Re: Problem with Tor & IceCat

https://en.wikipedia.org/wiki/Freedom_of_the_Press_Foundation

freedom press onion site: http://www.freepress3xxs3hk.onion/

I can search for tor hidden services here:

make grub hide the boot screen unless the "shift" key is pressed!

https://ahmia.fi/

I should probably re-read the archwiki about this info.

Add the following line to the file etc/grub.d/31_hold_shift

GRUB_FORCE_HIDDEN_MENU="true"

chmod a+x /etc/grub.d/31_hold_shift grub-mkconfig -o /boot/grub/grub.cfg

make it possible to only enter the LUKS volume passphase once!

This way I can have several encrypted partitions:

home, boot, swap, grub, etc. and I only enter in one passphrase to decrypt all of them!

Yes, entering the LUKS volume passphrase twice is normal, though I would love to hear about ways to improve it. As I understand it, both GRUB and Linux have to unlock the LUKS volume, and they do not by default coordinate in any way - that is why you have to enter it two times. I don't know how to arrange for a password to be entered only once, but I imagine that it may be possible, with varying degrees of security depending on the chosen solution.

You can use keyfiles to unlock the root partition. That's what I'm using on my arch setup to only have to type in one passphrase instead of three (GRUB, root, swap). No idea how you would translate this to GuixSD though.

The arch wiki has a section on the Dm-crpyt page showing you how to do this:

#Unlocking the root partition at boot

change the default networking service from wpa_supplicant to dhcp service

info:guix#Networking Services I can specify what dhcp client to use:

gnu Hurd internet bug report

guix X errors bug report

guix touchpad set up

darktable How do I use this thing?

manual things

make the manual distinguish between guix & guixSD

turn this arch wiki page into the guix manual.

isc-dhcp is the default. Ludo has an email talking about this topic. Email from Ludovic Courtès: Re: Communication and Design a

https://wiki.archlinux.org/index.php/Security

build some hardened packages & modify gnu-build-system to allow a package to be built hardened-ly.

Paste my patch at this email address: guix-patches@gnu.org

why am I getting two emails when I respond to the list and someone responds to me?

Here is some lisp that makes it possible https://lists.nongnu.org/archive/html/guix-devel/2014-04/msg00162.html

These are both the same email, but I have it twice!

Ricardo send me a To: jbranso.de && he sent me an email to the list. Why can't he just send it to the list?

I can actually fix this! I can go into each mailing list profile and specify not to receive duplicate messages. This should probably be the default.

Email from Ricardo Wurmus: Re: Brain storming cool Guix f

things I could package

https://atom.io/packages/file-icons

emacs-all-the-icons should also install the icons for you

I should try to package a stand alone wayland terminal

Email from Ricardo Wurmus: Re: Brain storming cool Guix f https://www.freedesktop.org/wiki/Software/kmscon/libtsm/

and wlterm https://www.freedesktop.org/wiki/Software/kmscon/wlterm/

package postorius as a guixSD service

https://gitlab.com/mailman/postorius

modily my myemacs so that it tries to run emacsclient -nc first

It's a python web app for GNU Mailman

emacsclient -a "" -c $@

set up mbsync

guix manual

TODO extend the guix manual to mention adding in vfat for UEFI booting [/]

DONE I fixed the full blown desktop example

TODO add some text that explicitly says that one needs to mention the vfat in their filesystems when using UEFI boot.

extend the guix manual to mention how to tweak awesome's config file

add a trouble shooting section in the guix manual to mention what to do on weird mouse issues

ask on guix-devel if I can make an awesome service that allows one to write thise

    make this emacsc in bashrc and it should work. http://pragmaticemacs.com/emacs/migrating-from-offlineimap-to-mbsync-for-mu4e/ :LOGBOOK:
  • State "TODO" from [2019-01-03 Thu 05:53]
  • :END: CLOSED: [2019-01-03 Thu 05:53] :LOGBOOK:
  • State "DONE" from [2019-01-03 Thu 05:53]
  • :END: :LOGBOOK:
  • State "TODO" from [2019-01-03 Thu 05:53]
  • :END:

  (service awesome-service-type
           (awesome-configuration
            (config-file "/path/to/file.lua")))

create a script to download the previous days' irc logs

use castget! https://castget.johndal.com/ and package it for guix

fix auto login, so I am automatically logged into sway.

kernel tuning via sysctl

run a custom kernel

load my color profile from Mac, because it looks awesome.

run shepherd as me. That way I can have user services.

It lets you automatically download podcasts!

How to write a new shepherd service for GNU guix

Start with this radicale-configuration simple service.

That would be super cool!

When you first create the service. Make it as simple as possible! When you create a basic working service, make a commit of it. Then slowly make it more feature complete. As you add it each, make many commits with each commit being a working state.

It should have:

  • 1 guix record with two fields: package and package file. This
  • means you can only create the service like:

#+BEGIN_SRC scheme (service -service-type) #+END_SRC

OR

#+BEGIN_SRC scheme (service -service-type (package-configuration (local-file "./package.conf"))) #+END_SRC

Here's an example simple service:

#+BEGIN_SRC scheme ;;; ;;; Endlessh ;;;

(define-record-type* endlessh-configuration make-endlessh-configuration endlessh-configuration? (package endlessh-configuration-package (default endlessh)) (config-file endlessh-configuration-config-file (default %default-endlessh-config-file)))

(define %default-endlessh-config-file (plain-file "endlessh.conf" "# The port on which to listen for new SSH connections. Port 22

# The endless banner is sent one line at a time. This is the delay # in milliseconds between individual lines. Delay 10000

# Set the family of the listening socket # 0 = Use IPv4 Mapped IPv6 (Both v4 and v6, default) # 4 = Use IPv4 only # 6 = Use IPv6 only BindFamily 0"))

(define endlessh-shepherd-service (match-lambda (($ package config-file) (list (shepherd-service (provision '(endlessh)) (documentation "Run the endlessh daemon.") ;; change this to user-processes & networking? like nginx? (requirement '(networking)) (start #~(make-forkexec-constructor (list #$(file-append package "/bin/endlessh") "-f" #$config-file) #:user "root" )) (stop #~(make-kill-destructor)))))))

(define endlessh-service-type (service-type (name 'endlessh) (description "Run endlessh, a small turning ssh tarpit.") (extensions (list (service-extension shepherd-root-service-type endlessh-shepherd-service))) (default-value (endlessh-configuration))))

    #+END_SRC
  • Create a commit of the above.
  • If applicable, change the -shepherd-service, to use a
  • make-forkexec-constructor/container. This will make the service abide by "principle of least privilege."
  • When your service now uses make-forkexec-constructor/container
  • and works, make a commit.
  • Now try to get add more guix records so your service may look
  • like this:

#+BEGIN_SRC scheme (service -service-type (-configuration (fieldA (field-configuration (field1 "blah") (field2 (list 1 2 3)))) (fieldB "great"))) #+END_SRC

I can run sheperd as my user joshua and use it to manage my emacs daemon.

there is now a guix-blog@gnu.org email address. If I want to write a blog article

make guix tell you where a package is defined: Email from Julien Lepiller: Re: Right way: define, build a

make guix install programs from file

make guix build an installation image

guix package -i $(cat package-list.log | xargs)

I'll need this because the current install image on the guix system website does not have the keyboard layout option.

LUKS setup

guix system --file-system-type=iso9660 disk-image ~/prog/gnu/guix/gnu/system/install.scm

The following example specifies a mapping from ‘/dev/sda3’ to ‘/dev/mapper/home’ using LUKS—the Linux Unified Key Setup (https://gitlab.com/cryptsetup/cryptsetup), a standard mechanism for disk encryption. The ‘/dev/mapper/home’ device can then be used as the ‘device’ of a ‘file-system’ declaration (*note File Systems::).


  (file-system
   (mount-point "/home")
   (device (mapped-device
            (source "/dev/sda3")
            (target "home")
            (type luks-device-mapping)))
   (type "ext4"))

I temporarily set the LUKS encrypted passwords on my encrypted partitions to "a" so I could boot easily.

I found out how to do it here: https://linux.die.net/man/8/cryptsetup

cryptsetup luksAddKey RET

I can remove the "a" key via:

how nckx builds guix:

cryptsetup luksRemoveKey RET

"gnutls" "guile" "guile-gcrypt" "guile-git" "guile-json" "guile-sqlite3" "guile-ssh" ; ./pre-inst-env guix! [15:14]

Here's what I added to my manifest to use Guix from git (posted this yesterday too, perhaps that's a sign we need to document it better):

learning about environments

Here's the full command I use: guix environment --pure guix -- sh -c 'make -j clean; ./bootstrap && ./configure --sysconfdir=/etc --localstatedir=/var && make -j`nproc`' [15:33]

all about packaging

https://dthompson.us/ruby-on-guix.html

searching for packages

guix package spits out packages into recsel database format. You can use recsel to format the output.


  guix package -i recutils
  guix package -s guile-g | recsel -p name
name: guile-gnome
name: guile-gcrypt
name: guile-gnunet
name: guile-git
name: guile-gdbm-ffi
name: guile2.0-gcrypt
name: emacs-gtk-look

  guix package -s guile-g | recsel -p name,version,synopsis

understanding gexps

name: guile-gnome
version: 2.16.5
synopsis: Guile interface for GTK+ programming for GNOME
name: guile-gcrypt
version: 0.1.0
synopsis: Cryptography library for Guile using Libgcrypt
name: guile-gnunet
version: 0.0-1.d12167a
synopsis: Guile bindings for GNUnet services
name: guile-git
version: 0.2.0
synopsis: Guile bindings for libgit2
name: guile-gdbm-ffi
version: 20120209.fa1d5b6
synopsis: Guile bindings to the GDBM library via Guile's FFI
name: guile2.0-gcrypt
version: 0.1.0
synopsis: Cryptography library for Guile using Libgcrypt
name: emacs-gtk-look
version: 29
synopsis: Find and display HTML documentation for GTK, GNOME and Glib

G-expressions are a convenient additional of guix that allows one to reason about building software. They are like quasiquote and unquote. There are two sections of code here. The code that assembles the build process and the build code. Guix writes the build recipe to a file in the store, called a derivation. Guix later opens this derivation and executes the code in the derivation.

` and =,=, and =,@= are used in scheme to treat scheme code as data and optionally expand it as in the following scheme segment.


`(data ,(+ 2 4))
data 6

Gexps use #~, #$, #$@ to quote and unquote scheme code. Gexps write their contents to a file, and other processes mess with the code produced in that file.

Gexps can be turned into derivations. So we have a assembly line like so:

Gexps -> derivations -> build procedure -> files added to the store

Where gexps make derivations, which add files to the store.

things to read

http://okmij.org/ftp/meta-programming/#meta-scheme

https://edolstra.github.io/pubs/phd-thesis.pdf

how to delete old package generations

This is how you delete old package generations.

guix package -l will show you the generations that you have.

if you update sway, and sway won't start

guix package -d 10..50 will delete all generations 10-50.

It probably has to do with an outdated shader cache. It is an easy fix.

#+BEGIN_SRC sh :results output :exports both rm -r .cache/mesa_shader_cache/ #+END_SRC

try to get firefox installed

This is a firefox guix recipe.

DONE autologin added to the cookbook

https://framagit.org/tyreunom/guix-more/blob/master/more/packages/gnuzilla.scm

I need to modify mingetty from base services.

This can probably be done via fold or map procedues...Or via modify services.

open a guile repl

,use(gnu services) ,use(gnu services base) ,use(guix) ,use(oop goops) ,use(shepherd service)

The “service” is obviously a very important concept of the Shepherd. On the Guile level, a service is represented as an instance of ‘’, a GOOPS class (*note (guile)GOOPS::). When creating an instance of it, you can specify the initial values of its slots, and you actually must do this for some of the slots.

The ‘’ class and its associated procedures and methods are defined in the ‘(shepherd service)’ module.

#+BEGIN_SRC scheme (use-modules gnu services) (use-modules gnu services base) (use-modules guix) (use-modules oops goops) (use shepherd service) (define %my-base-service (map (lambda (service) (describe service)) %base-services))

#+END_SRC

devel things

Add a ~/.gdbinit file to the %default-skeletons

#+RESULTS:

Using debugging files should work automatically. It should be as easy as

#+BEGIN_SRC sh :results output :exports both guix install glibc:debug guile:debug guix build --source guile #+END_SRC

info:guix#operating-system Reference skeletons

info:guix#Installing Debugging Files

Program binaries, as produced by the GCC compilers for instance, are typically written in the ELF format, with a section containing “debugging information”. Debugging information is what allows the debugger, GDB, to map binary code to source code; it is required to debug a compiled program in good conditions.

The problem with debugging information is that is takes up a fair amount of disk space. For example, debugging information for the GNU C Library weighs in at more than 60 MiB. Thus, as a user, keeping all the debugging info of all the installed programs is usually not an option. Yet, space savings should not come at the cost of an impediment to debugging—especially in the GNU system, which should make it easier for users to exert their computing freedom (*note GNU Distribution::).

Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a mechanism that allows users to get the best of both worlds: debugging information can be stripped from the binaries and stored in separate files. GDB is then able to load debugging information from those files, when they are available (*note (gdb)Separate Debug Files::).

The GNU distribution takes advantage of this by storing debugging information in the ‘lib/debug’ sub-directory of a separate package output unimaginatively called ‘debug’ (*note Packages with Multiple Outputs::). Users can choose to install the ‘debug’ output of a package when they need it. For instance, the following command installs the debugging information for the GNU C Library and for GNU Guile:

guix install glibc:debug guile:debug

GDB must then be told to look for debug files in the user’s profile, by setting the ‘debug-file-directory’ variable (consider setting it from the ‘~/.gdbinit’ file, *note (gdb)Startup::):

(gdb) set debug-file-directory ~/.guix-profile/lib/debug

From there on, GDB will pick up debugging information from the ‘.debug’ files under ‘~/.guix-profile/lib/debug’.

In addition, you will most likely want GDB to be able to show the source code being debugged. To do that, you will have to unpack the source code of the package of interest (obtained with ‘guix build --source’, *note Invoking guix build::), and to point GDB to that source directory using the ‘directory’ command (*note ‘directory’: (gdb)Source Path.).

The ‘debug’ output mechanism in Guix is implemented by the ‘gnu-build-system’ (*note Build Systems::). Currently, it is opt-in—debugging information is available only for the packages with definitions explicitly declaring a ‘debug’ output. This may be changed to opt-out in the future if our build farm servers can handle the load. To check whether a package has a ‘debug’ output, use ‘guix package --list-available’ (*note Invoking guix package::).