Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jjba23/sss

Supreme Sexp System - SSS - a Lisp machine adventure
https://github.com/jjba23/sss

common-lisp dotfiles emacs gnu guile guix lisp nix scheme

Last synced: 3 days ago
JSON representation

Supreme Sexp System - SSS - a Lisp machine adventure

Awesome Lists containing this project

README

        

#+title: Supreme Sexp System - SSS
#+author: Josep Bigorra
#+email: [email protected]
#+options: num:nil

A Lisp machine adventure, where GNU and Lisp are celebrated, GNU is love, Emacs and StumpWM are life.

gnu emacs + stumpwm + gnu guix

Find the divine sayings, and the destined configurations, all my Guix, Scheme, StumpWM, Common Lisp and Emacs Lisp configurations here for learning you a fully Lisp machine with GNU/Linux for a great good.

*** What lies here?

Knowledge you may find in the repo includes:
- Emacs configurations with Emacs Lisp + Elpaca
- GNU Guix system configurations with Guile Scheme
- StumpWM configurations in Common Lisp with GNU Guix modules for SBCL
- kitty terminal emulator configurations from Guile Scheme (in GNU Home)
- picom configurations from Guile Scheme (in GNU Home)
- rofi configurations

Note: Screenshot below might be outdated and no longer representative of the current, everchanging state of these "dotfiles".
#+begin_html

#+end_html

*** Introduction
These are my configuration files, which also explain a lot about the tooling I use and enjoy, and can teach you a thing or two.

If you like my work, please support me by [[https://bmc.link/jjbigorra][buying me a cup of coffee ☕]] so I can continue with a lot of motivation.

This is the set of files that powers my day-to-day computing experience, so do not track my dotfiles (rolling, unstable, and untested), but feel free to use them and take inspiration from them or fork and work under the terms of the GNU GPL v3 or newer.

#+begin_html


GNU Emacs

#+end_html

In some ways this is a laboratory of experimentation for my computing environment. What I do with any other program that forms part of sss is only meant to work for me. As such, I may introduce breaking changes without prior notice.

This is all to say that you understand the risks associated with tracking an ever-changing project that does not enjoy widespread testing and whose target audience is only me. If you are fine with that and are willing to assume responsibility for any possible breakage, then please feel welcome to follow along. You can always open an issue here or contribute any fixes, if you will.

*** Per host - per-host.scm

It is *REQUIRED* to include a ~per-host.scm~ in the root of this project, which is excluded from Git, and will determine certain settings for your own machine.
Find here a reference configuration with what is required.

#+begin_src scheme
(define sss-filesystems
(list (file-system
(device "/dev/nvme0n1p3")
(mount-point "/")
(type "ext4"))
(file-system
(device "/dev/nvme0n1p1")
(mount-point "/boot/efi")
(type "vfat"))))
#+end_src
*** Words of Advice

Learning Lisps is really going down a rabbit hole, but trust me, you will come out with a better understanding of programming as a whole out the other end.

This configuration is heavily biased towards containing a ~joe~ user who also acts as administrator for most of the time. Your mileage may vary (YMMV).

Some commands in the ~Makefile~ are more geared towards ~joe~ since we assume a device is most frequently only tended to by one system administration most of the time. Some examples are ~make fr~ or ~make jr~.

The system and home folders of users are managed independently of each other, in quite a loosely coupled manner.

It's possible you need to some manual installations, and temporary workarounds, in order to install ~sss~ on a brand-new Guix installation. For example including ~nonguix~ in your channels (=~/.config/guix/channels.scm=). You might also need to install tools like Git and GNU make temporarily.

#+begin_src scheme
(cons* (channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
%default-channels)

#+end_src