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.
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
user | password |
mybills@member.fsf.org | BUYkxiMA |
Activation code EJJS5L8QS9NCJMNURQ4SMFH
It looks like I can manually start this connection with
sudo openvpn my_expressvpn_switzerland.opvn
My unique username and password for the VPN client.
username | password |
sy1jyfo36842x835jvezzdao | wnu2a6lgs8azarulqwqkzhak |
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.
From: Joshua Branson To: bug-guix@gnu.org Subject: Something appears to disable linux kernel modules from loading. --text follows this line--
Hello!
tl;dr
Something is causing linux 5.4.20 not to load kernel modules at boot. Perhaps the culprit is the shepherd 0.7.0.
So I recently reconfigured guix on my ThinkPad T400.
$ guix describe
Generation 32 Feb 18 2020 16:53:46 (current)
jmacs 1a401c8
repository URL: https://notabug.org/jbranso/guix-packages.git
branch: master
commit: 1a401c81ed0617e2ca2fa37ec8caa9ca96032b7a
guix 97c6670
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 97c6670ef79bbf5e82dece2e837ed73b6462da01
After I rebooted sway refused to start. The sway error message said
$ sway
[backend/backend.c:339] Failed to open any DRM device.
[sway/server.c] Unable to create backend.
So sway is not starting. I believe this is because my i915 intel driver is not loaded. I know this is the case, because the text on my virtual console is LARGE. $ sudo modprobe i915 loads the required driver. And I can now log into sway.
However, my ethernet driver is not loaded.
$ lsmod | grep e1000e
$ sudo modprobe e1000e
Then I ran ifconfig, and indeed I now have an ethernet device.
$ ifconfig
enp0s25 Link encap:Ethernet HWaddr 00:1C:25:9A:37:BA
inet addr:172.16.113.199 Bcast:172.16.115.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:505 errors:0 dropped:0 overruns:0 frame:0
TX packets:570 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:143838 TX bytes:60886
Interrupt:20 Memory:fc100000-fc120000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:0.0.0.0 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0
And I now have an internet connection.
joshua@dobby ~/prog/org$ ping -c 3 gnu.org
PING gnu.org (209.51.188.148): 56 data bytes
64 bytes from 209.51.188.148: icmp_seq=0 ttl=56 time=35.610 ms
64 bytes from 209.51.188.148: icmp_seq=1 ttl=56 time=35.635 ms
64 bytes from 209.51.188.148: icmp_seq=2 ttl=56 time=35.501 ms
--- gnu.org ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 35.501/35.582/35.635/0.058 ms
But I do not have a working touchpad. I guess my touchpad driver is not loaded. I'm not certain what driver my touchpad uses, so for now I am doing with out.
I then went and asked for some tips on irc. HappyEnt claimed the problem for him was commit 205c1e0.
janneke was also having issues with kernel modules not being
automatically booted. He said that this commit worked for him:
ef2b1d2c8b
. He then said that commit
d39885a8a9
also worked, which implied
the problem was not the linux version 5.4.20, but possibly the
shepherd.
I tried reconfiguring with commit
d39885a8a9
, to see if that solved my issue.
guix time-machine --commit=d39885a8a9e0e03c2bf6277d475d384168bba642 -- system reconfigure
$ uname -r
5.4.20-gnu
janneke's commit did solve my issue. After rebooting, sway starts, I have internet, and my touchpad and sound work.
Man I love guix system. It really does work smoothly, even when you have problems. So thanks for making a great GNU/Linux distro!
I started using sway, and my mouse issue went away.
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20433
Ricardo suggests blacklisting the usbkdb module.
modeprobe.blacklist=usbkdb
(kernel-arguments '("modprobe.blacklist=usbkbd"))
I need to run
$ guix pull
# guix pull
;; Edit configuration.scm to add ‘kernel-arguments’ to the config: ;; (operating-system ;; … ;; (kernel-arguments '("modprobe.blacklist=usbkbd")))
How do you list all of your input devices?
https://wiki.archlinux.org/index.php/Libinput#Configuration
xinput
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ bcm5974 id=12 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ Built-in iSight: Built-in iSigh id=10 [slave keyboard (3)] ↳ Apple Inc. Apple Internal Keyboard / Trackpad id=11 [slave keyboard (3)]
And it looks like #3 is my keyboard.
Here's a question for ya. How do you know what driver is powering each input device?
cat Xorg.0.log | grep "Using input driver"
[ 67.176] (II) Using input driver 'evdev' for 'Power Button' [ 67.252] (II) Using input driver 'evdev' for 'Video Bus' [ 67.253] (II) Using input driver 'evdev' for 'Power Button' [ 67.254] (II) Using input driver 'evdev' for 'Sleep Button' [ 67.255] (II) Using input driver 'evdev' for 'Built-in iSight: Built-in iSigh' [ 67.256] (II) Using input driver 'evdev' for 'Apple Inc. Apple Internal Keyboard / Trackpad' [ 67.325] (II) Using input driver 'synaptics' for 'bcm5974'
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-con-fig
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 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
nix-env --install firefox
nix-env --uninstall firefox
nix-env --upgrade firefox
nix-env -qa firefox (query for packages)
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.
guix system reconfigure -n sway.scm
This will show you the derivations that guix has to do.
like this
guix system reconfigure -n sway.scm
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.
joshua@dobby $ guix build /gnu/store/xp3ril0dkk6d0fa53d7jl6ypcd1dpdhl-shepherd-vpn-client.scm.drv
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!
cat /gnu/store/b6h8njd1mcf7wp7bic5drzqjyphlilrn-shepherd-vpn-client.scm
(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!
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
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
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
the bug report is here. https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26158
guix archive --authorize
??
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. 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
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. 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 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:
#+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!
current-system is the current system.
booted-system is the last booted system.
To update the whole system. ie: pacman -Syu equivalent:
joshua@dobby $ sudo bash --login
root@dobby # guix pull && guix system reconfigure config.scm
To update my user's packages
joshua@dobby $ guix pull
joshua@dobby $ guix package -u
guix package -i $(cat package-list.log | xargs) 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.
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.
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] 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 |
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 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! https://gitlab.com/pkill-9/guix-packages-free/tree/master/pkill9/packages
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.
rm -r .cache/mesa_shader_cache/
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.
(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))
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::).