system-configuration

My system configurations all in one place

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

Update config

Julien LepillerTue Jan 23 19:23:18+0100 2024

61b4bbc

system-configuration
namelast commitdate
README.mdAdd XanaThu Jul 02 20:18:32+0200 2020
files/Add nonoSat Jun 18 19:34:31+0200 2022
homes/Fix a fileSun Sep 04 21:09:40+0200 2022
keys/Add nonoSat Jun 18 19:34:31+0200 2022
modules/Update configTue Jan 23 19:23:18+0100 2024
motd/Add nonoSat Jun 18 19:34:31+0200 2022
systems/Update nonoTue Jan 23 19:23:18+0100 2024

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.