|
1 | | -# Lisp user space |
| 1 | +# Building a futuristic Lisp workstation |
2 | 2 |
|
3 | | -An [org-roam](https://www.orgroam.com/) tree of my Lisp user space workstation, exported to [org-roam-ui](https://github.com/org-roam/org-roam-ui) with [publish-org-roam-ui](https://github.com/ikoamu/publish-org-roam-ui). |
| 3 | + |
4 | 4 |
|
5 | | -Available live here: https://enzuru.github.io/lisp-user-space/ |
| 5 | +This web of projects documents how you can use the [GNU operating system](https://www.gnu.org/) in order to create a futuristic Lisp workstation, with Linux as its kernel, and a rich Lisp user space on top. |
| 6 | + |
| 7 | +Using [org-roam-ui](https://github.com/org-roam/org-roam-ui), you can [visually navigate](https://enzuru.github.io/lisp-user-space/) how these projects work together to build a Lisp workstation. |
| 8 | + |
| 9 | +You can have your [user space tools written in Emacs Lisp](https://github.com/enzuru/.emacs.d), your [window management handled by Common Lisp](https://github.com/enzuru/.stumpwm.d), and [your system configuration declaratively written in Guile Scheme](https://github.com/enzuru/profiles). |
| 10 | + |
| 11 | +## Features |
| 12 | + |
| 13 | +### High-performance parallel computing |
| 14 | + |
| 15 | +By combining GNU Guix's [high-performance computing emphasis](https://hpc.guix.info/) with [advanced Clojure parallel computing libraries](https://dragan.rocks/software/), one ends up with a powerful workstation for expressing complex workloads in elegant forms. |
| 16 | + |
| 17 | +### Trustless full-source bootstrap |
| 18 | + |
| 19 | +Secure yourself against malevolent state actors and never trust someone else's unverified binaries again, as you can [build from the source all the way down](https://guix.gnu.org/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/). |
| 20 | + |
| 21 | +### Hack your operating system live |
| 22 | + |
| 23 | +Lisp user space provides an [introspective](https://www.gnu.org/software/guile/manual/html_node/Introspection.html), [hackable](https://www.gnu.org/philosophy/rms-hack.en.html), and [transactionable](https://guix.gnu.org/en/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/) operating system that can be modified live in a [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop). |
| 24 | + |
| 25 | +### Text-based and keyboard-driven |
| 26 | + |
| 27 | +Lisp user space is centered on [text-based user interfaces](https://en.wikipedia.org/wiki/Text-based_user_interface) instead of [graphical user interfaces](https://en.wikipedia.org/wiki/Graphical_user_interface), and can be used [without a mouse](https://www.nongnu.org/ratpoison/inspiration.html), which makes it easier to use for people living with disabilities as well as power users. |
| 28 | + |
| 29 | +Emacs has text-based keyboard-driven applications for all the major desktop environment functions, such as [window management](https://github.com/ch11ng/exwm), [file management](https://github.com/suntsov/efar), [web browsing](https://github.com/emacsmirror/elpher), [mail](https://notmuchmail.org/notmuch-emacs/), [streaming music](https://github.com/agrif/pianobar.el), [chatting](https://www.gnu.org/software/emacs/manual/html_mono/erc.html), [shell management](https://www.gnu.org/software/emacs/manual/html_mono/eshell.html), [version control](https://magit.vc/), and [life organization](https://orgmode.org/). All these tools can be modified and adjusted live as you use them. |
| 30 | + |
| 31 | +### Perfect complement to POSIX |
| 32 | + |
| 33 | +If in [POSIX](https://en.wikipedia.org/wiki/POSIX) everything is [truly a file](https://en.wikipedia.org/wiki/Everything_is_a_file), then [the logical conclusion](https://github.com/NetBSD/src/blob/cfd6b2f509474ce4eee8adcb3259acbdd754f5e1/doc/roadmaps/desktop#L259) is that the ideal POSIX "desktop environment" should be a file editor, and the only editor that can function as such is GNU Emacs. |
| 34 | + |
| 35 | +### Respects your freedom |
| 36 | + |
| 37 | +The operating system is mostly defined [declaratively](https://en.wikipedia.org/wiki/Declarative_programming) in Scheme Lisp and the applications are mostly coded [imperatively](https://en.wikipedia.org/wiki/Imperative_programming) in Emacs Lisp. Both can be inspected and hacked live in a REPL, making it a pure expression of the libre software ethic, and an incredibly versatile tool for a skilled programmer. |
| 38 | + |
| 39 | +## Setting up a Lisp user space |
| 40 | + |
| 41 | +It's remarkably easy to get a Lisp user space setup on top of Linux: |
| 42 | + |
| 43 | +- Install the [Guix GNU/Linux distribution](https://guix.gnu.org) |
| 44 | +- Only install [nonguix](https://gitlab.com/nonguix/nonguix) if you truly require additional hardware support |
| 45 | +- Install Emacs (`guix install emacs`) |
| 46 | +- Install [Geiser](https://www.nongnu.org/geiser/) (`M-x package-install geiser-guile`) and [SLY](https://github.com/joaotavora/sly) (`M-x package-install sly`) |
| 47 | +- Install a Lisp window manager like [exwm](https://github.com/emacs-exwm/exwm) (`M-x package-install exwm`) or [StumpWM](https://github.com/stumpwm/stumpwm) (`guix install stumpwm`) |
| 48 | +- Bootstrap your window manager ([exwm](https://github.com/ch11ng/exwm/wiki#bootstrap), [StumpWM](https://github.com/stumpwm/stumpwm/wiki/StartUp)) |
| 49 | +- Boot into your window manager ([exwm](https://github.com/ch11ng/exwm/wiki/Configuration-Example#configuration-of-x-init-script), [StumpWM](https://stumpwm.github.io/git/stumpwm-git_1.html)) |
0 commit comments