A Lisp machine adventure, where GNU, Emacs, Lisp and the hacking culture are celebrated.
GNU Guix + GNU Emacs + Nix + Sway 💚
Let me help you achieve GNUrvana.
If you like my work, please support me by buying me a cup of coffee ☕ so I can continue with a lot of motivation.
Find the divine sayings, and the destined computer configurations, all my Guix, Scheme, Sway, and Emacs Lisp and more configurations here for learning you a fully Lisp machine with GNU/Linux for a great good.
This setup enhances customization to infinity and offers a superior user experience thanks in part too to REPL (Read Eval Print Loop) and Lisps.
🇳🇱 parts of the code and settings might be in the Dutch language ( nl_NL.UTF-8
).
Knowledge you may find in the repo includes:
- Emacs configurations with Emacs Lisp + Elpaca
- GNU Guix system configurations with Guile Scheme
- Sway WM configurations in Guile Scheme with GNU Home
- foot terminal emulator
Note: Screenshot below might be outdated and no longer representative of the current, everchanging state of these “dotfiles”.
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 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.
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.
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.
(use-modules (gnu)
(gnu packages))
(define sss-filesystems
(list (file-system
(device "/dev/nvme0n1p3")
(mount-point "/")
(type "ext4"))
(file-system
(device "/dev/nvme0n1p1")
(mount-point "/boot/efi")
(type "vfat"))))
;; or (define sss-per-host-packages '())
(define sss-per-host-packages
(list
(specification->package "amd-microcode")
(specification->package "amdgpu-firmware")
(specification->package "steam")))
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.
Some aspects will be dependent on the manner of installation and hardware.
For example including nonguix
in your channels (~/.config/guix/channels.scm
). You might also need to install tools like Git and GNU make temporarily.
(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)
You should every now and then do a guix pull
from your regular user, and then rebuild this system. See the Makefile for more information.
Nixpkgs contains a lot of software which we can leverage and manage from Guix. SSS will automatically install and provide the Nix package manager for you.
SSS also provides some facilities to manage Nix from the comfort of your Guile Scheme.
You might need to activate and link the profile in order to be able to use, for the first time.
ln -sfv /nix/var/nix/profiles/per-user/joe/profile /home/joe/.nix-profile
You can switch your install to use nixpkgs-unstable with:
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
nix-channel --update
You can install Nix packages by running:
nix -L profile install --impure nixpkgs#firefox
You can keep your Nix packages updated by running:
NIXPGS_ALLOW_UNFREE=1 nix profile upgrade --impure '.*'
The installed software will be available, for example at: /home/joe/.nix-profile/bin/