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.
https://www.cogipas.com/is-my-vpn-working/
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
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
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:
(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
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.
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
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'
https://github.com/yenda/guix-config
list of errors:
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.
You can get this information from /var/log/messages
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
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
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
./pre-inst-env sudo -E guix system reconfigure #+END_SRC make check TEST=tests/packages.scm
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
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.
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
nix-env -qa firefox (query for packages)
guix archive --authorize
??
guix archive --authorize < hydra.gnu.org.pub
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
dd if=/dev/urandom of=/dev/sdX bs=1M *replace X with the target drive letter.
Replace X with the target drive letter.
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
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
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.
https://notabug.org/cwebber/guile-squee
current-system is the current system.
booted-system is the last booted system.
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
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
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
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
When you get to grub, use this command to boot to guix.
configfile (hd1)/boot/grub/grub.cfg
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)
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
: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
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.
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.
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, gets a call from a phone, it then forwards that call onto my SIP account, which I can answer with my SIP client.
jmp-fwdcalls lets a landline phone user, talk to a SIP user. https://github.com/singpolyma/mnemonicode
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
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.
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
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?
https://wiki.soprani.ca/
ossguy uses Bandwith as his carrier. I could do the same.
https://xmpp.org/extensions/xep-0174.html
This is a text message, but I believe you also call a XMPP "text" message an SMS.
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.
https://git.cbaines.net/guix/tooling-to-improve-security-and-trust/about/
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.
#+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
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-git-server-on-a-vps
https://git.gnu.io/foocorp/librefm/-/wikis/home
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.
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
base it on David thompson's blog post https://dthompson.us/reproducible-development-environments-with-gnu-guix.html
#+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
I think various services re-define the same function.
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
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
#+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
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
#+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
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
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.
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.
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 :)
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.
I could use "skeletons" for this. But it would apply my change for ANY new user, not just me.
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".
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
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
#+BEGIN_SRC sh :results output :exports both guix package -i flatpak xdg-desktop-portal xdg-desktop-portal-gtk #+END_SRC
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
#+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:
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
#+BEGIN_SRC sh :results output :exports both flatpak run org.mozilla.firefox #+END_SRC
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23170 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23199
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24066
Emacs Dependencies for 26.3 http://www.linuxfromscratch.org/blfs/view/svn/postlfs/emacs.html
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
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
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 .
This is the variable for user services called operating-system-user-services.
It is populated . Or is that just the type?
What is a scheme record type? It is kind of like a class, but not quite...
I'm using libreboot. Libreboot sets the grub layout for me.
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.
: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.
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.
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.
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
(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.")))
https://wiki.archlinux.org/index.php/Using_a_SOCKS_proxy
I can set up wget to use tor with an environmental variables!
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:
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
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
info:guix#Networking Services I can specify what dhcp client to use:
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
Paste my patch at this email address: guix-patches@gnu.org
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
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/
https://gitlab.com/mailman/postorius
It's a python web app for GNU Mailman
emacsclient -a "" -c $@
(service awesome-service-type
(awesome-configuration
(config-file "/path/to/file.lua")))
It lets you automatically download podcasts!
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:
#+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))))
#+BEGIN_SRC scheme (service -service-type (-configuration (fieldA (field-configuration (field1 "blah") (field2 (list 1 2 3)))) (fieldB "great"))) #+END_SRC
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.
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 found out how to do it here: https://linux.die.net/man/8/cryptsetup
cryptsetup luksAddKey RET
I can remove the "a" key via:
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):
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]
https://dthompson.us/ruby-on-guix.html
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
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.
This is how you delete old package generations.
guix package -l will show you the generations that you have.
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
This is a firefox guix recipe.
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
#+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::).