system-configuration

My system configurations all in one place

git clone https://git.lepiller.eu/git/system-configuration

Update tachikoma

Julien LepillerSat May 29 22:40:14+0200 2021

8fa5873

system-configuration
namelast commitdate
README.mdAdd XanaThu Jul 02 20:18:32+0200 2020
files/Add pulse config fileThu Nov 19 13:03:31+0100 2020
homes/Update home configurationThu Jul 02 20:10:45+0200 2020
keys/Add tachikoma key to xana ACL.Mon Nov 30 21:28:48+0100 2020
modules/Fix typoSat May 29 22:39:47+0200 2021
motd/Add XanaThu Jul 02 20:18:32+0200 2020
systems/Update tachikomaSat May 29 22:40:14+0200 2021

README.md

Tyreunom's System Configuration

This repository contains the tools and configurations of my Guix systems. Guix provides a complete solution for declarative system configuration while allowing the full power of a programming language. A system configuration is nothing less than a complete guile program!

In addition to the declarative nature of Guix configurations, Guix itself provides a robust system, with reproducibility, statelessness and an emphasis on user freedom, thanks to its functional package management technique.

Understanding the Content of this Repository

Although the repo might be used for inspiration, it's not meant to be generic in any way: it's only my configuration.

The modules directory contains guile modules that are used by multiple systems. They are loaded in the guile PATH along with guix modules during the call to the guix system command that generates the system.

The motd and keys directories contain data files that are meant to be copied directly to the store, thanks to local-file.

The systems directory contain the actual configurations, one file per system, named after the host-name of the system.

How to Configure a System

Assuming you cloned this repository in /root/system-configurations, you can reconfigure your system with this command:

guix system reconfigure -L /root/system-configurations/modules \
  /root/system-configurations/systems/<system>.scm

User Configuration

Guix doesn't provide a nice way to configure user services (yet), so the homes directory contains configuration and configuraton files, as well as manifests for users.

This is mostly useful for my desktop computers.

I found a way to manage the home directory with guix, but it's not as nice as it could be. The home directory is transformed into a guix profile, and to do that, a package is created that contains all my user configuration.

First, create a separate directory that will contain all your data that can be written to: mkdir -p /data/tyreunom in my case. Then, create a new profile, that will only contain one package:

cd homes
guix package -p /var/guix/profiles/per-user/tyreunom/home -L ../modules \
  -f sybil-home.scm

My home directory is now read-only which a lot of software doesn't like. The package contains some tweaks to have some writable directories, but not everything will work. It's still a work in progress!

As an example of something that will not work properly, pulseaudio will simply refuse to run if your home directory is read-only. To work around this, I start pulseaudio from my window manager's autostart file, with a separate HOME variable set to a directory in /tmp.

A nice aspect of this however, is that we can now create more modules to support more software. These modules can be generic enough to be useful to anyone with a simple configuration, just like services are useful for system administrators. Home related modules can be found in (home), that is in modules/home.

What do your System Names Reference?

My systems are named after AI systems / personalities in anime and books I've seen and read.