title:Console only computing
date: 2022-02-12 10:40
tags: console guix
summary: Console only computing is kind of fun.
---

For about two weeks now, I have been using Guix System in console mode only.
That means that my laptop currently *cannot* display images or video. It also
means that I do not have much use for a mouse. It has been an interesting
experience.

Of course, the average reader of this blog must be asking, &ldquo;Why?&rdquo;. Well you are
familiar with dumb and smart phones, yes? Have you ever heard of a **life
computer**? A life computer, is a computer that is so useless, that you want to
stop using it and live your life instead. I personally have been using my laptop
to consume tons of entertainment tv shows, movies, etc. I am starting to feel
like that this is just wasting my life. Some of my good friends do not have time
for useless entertainment-seeking. Since I want to emulate the best of my
friends, I would like to make it nearly impossible for me to consume mindless
entertainment.

Emacs has been an absolute Godsend for this little experiment.  Since, I am
somewhat familiar with Emacs, I am still able to check email (though I still
struggle with reading email with Emacs), write these blog posts, use dired, etc.
I am not certain that I could live in a console only operating system without
Emacs.  Also Emacs&rsquo;s org-mode is wonderful!

I also found out that `Alt-<left arrow key>` and `Alt-<right arrow key>` is a
quick way to cycle through virtual consoles. I am having some issues with being
unable to use numerous websites. This is pretty obvious, because most console
web browsers have little to no support for javascript.

I am currently wanting to listen to some [librevox](https://librevox.org) recordings, but I am not
certain how to navigate the website in console mode. Lynx spits out some errors
that the HTML is badly formatted or something. For now, I am just using the work
computers to download said files. I wonder if there is some sort of free
software tool that will let you search and download audio files from the command
line&#x2026;I am sure it exists somewhere. `youtube-dl` would probably be it, but I
feel awkward downloading files from youtube, because I am not certain which
videos are legal for me to download.

I am planning on continuing to run a console only OS for the forseeable future.
Since I do not feel like I have the power to NOT use my computer to watch lots
of tv shows/movies, I gave my friend the root password to my computer, and I
removed my user &rsquo;joshua&rsquo; from the `wheel` group:

    (users (cons* (user-account
                   (name "joshua")
                   (comment "Joshua Branson")
                   (group "users")
                   (home-directory "/home/joshua")
                   (supplementary-groups
                    '("audio" "kvm" "netdev"
                      )))
                  %base-user-accounts))

I also set up my computer to use a modified `bare-bones.scm`, which means that I am
using &rsquo;%base-services&rsquo; instead of &rsquo;%desktop-services&rsquo;.  I kind of wonder how
lean I could make a custom Linux kernel since I am restricting myself to console
computing only.

I am finding that I would prefer to run some commands as root, like halt,
reboot, and adding in a new wifi network connection. It has actually been a
pleasure to read through `man 5 sudoers`, which is the file on your computer
that determines who can run which commands. I have not quite figured out how to
set up my user `joshua` to be able do various tasks like halt, reboot, kill,
etc., but I am looking forward to figuring it out. It will probably look like
something below. Note that I have NOT tested this bit of code.

    ;; I can read 'man 5 suoders' for tips about the syntax of suoders file.
    ;; the very end of the file has some examples.
    (sudoers-file
     (plain-file "sudoers"
                 (string-append (plain-file-content %sudoers-specification)
                                "CMD_Alias KILL = /run/current-system/profile/bin/kill
                                CMD_Alias SHUTDOWN = /run/current-system/profile/bin/shutdown
                                CMD_Alias HALT = /run/current-system/profile/bin/halt
                                CMD_Alias REBOOT = /run/current-system/profile/bin/reboot
                                CMD_Alias HERD = /run/current-system/profile/bin/HERD
                                CMD_Alias NMCLI = /run/current-system/profile/bin/nmcli
                                joshua ALL = KILL, SHUTDOWN, HALT, REBOOT, HERD, NMCLI, \
                                sudoedit /etc/somefile, /etc/another-file"
                                )))

That&rsquo;s all that I have for today.  See you next time.

