Skip to content

my entire personal computing system, with packages & config defined declaratively and applied functionally

Notifications You must be signed in to change notification settings

benjuntilla/guix-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Ben's Guix Configuration

This is my entire system. Packages and configuration are managed in a purely functional manner.

Installation

This is a bit of an involved process; a convenient shell script should streamline this process.

  • Create initial installation of GUIX using System Crafter's tutorial
    • Stop before the "Saving your configuration" section
  • Log into the new installation, and clone this repository
  • Copy a system definition in ./systems that you want to base your new system off of into ./systems/$SYSTEM_NAME.scm (new definition), and open /etc/config.scm (old definition)
    • Doing this with a split neovim instance is helpful
    • Copy UUIDs within the file-systems value from the old definition to the new definition
    • Copy the host-name value from the old definition to the new definition
    • Copy the users value from the old definition to the new definition
  • Copy the channels definition used for installation into your home with
mkdir -p ~/.config/guix; cp /etc/channels.scm ~/.config/guix
  • Remove pins on channels by deleting all lines in ~/.config/guix/channels.scm containing (commit ...)
  • Update system with
guix pull
  • Ensure you follow the subsequent instructions describing how to set GUIX_PROFILE and source the profile, and then run
guix hash
  • Configure system with
sudo guix system reconfigure ./system/$SYSTEM_NAME.scm; guix home reconfigure ./home/home.scm
  • Export installed packages on old machine into a manifest with
guix package --export-manifest > manifest.scm
  • Then, install the packages using the manifest on your new machine with
guix package -m manifest.scm
  • Reboot and enjoy 🎊

About

my entire personal computing system, with packages & config defined declaratively and applied functionally

Topics

Resources

Stars

Watchers

Forks