Configuration files for NixOS
Switch branches/tags
Nothing to show
Clone or download
glines Added drawing tablet, CUDA, kernel debugging symbols, irssi configura…
…tion, smart card public key, EC2 hdd size, and probably a few other things.
Latest commit 08f4bb8 Mar 9, 2017
Permalink
Failed to load latest commit information.
ansible Added some simple ansible scripts Jun 15, 2015
dotfiles Added drawing tablet, CUDA, kernel debugging symbols, irssi configura… Mar 9, 2017
machines Added drawing tablet, CUDA, kernel debugging symbols, irssi configura… Mar 9, 2017
patches Added patch for rxvt-unicode shadows. Jun 1, 2014
pkgs Wow, a lot of changes added from this semester Nov 25, 2016
private Added wpa_supplicant configuration file. May 26, 2014
profiles
services Many changes, mostly for school. Everything is most likely broken. Feb 13, 2016
.gitignore
.gitmodules Changed oh-my-zsh submodule to the correct repository. Jun 25, 2014
Makefile Many changes, mostly for school. Everything is most likely broken. Feb 13, 2016
README.md Finished update.sh paragraph in README Jan 7, 2017
configuration-common.nix Added drawing tablet, CUDA, kernel debugging symbols, irssi configura… Mar 9, 2017
configuration.nix
install.sh Added mesa tmuxinator profile, makehuman, blender from git, heldarf, … Oct 8, 2015
libvirt_qemu.conf Added a lot of junk :) Aug 13, 2015
nixops.nix Added drawing tablet, CUDA, kernel debugging symbols, irssi configura… Mar 9, 2017
rebuild-local.sh
rebuild.sh Added a bunch of misc changes Sep 22, 2016
update.sh Changed dhaos size to micro. Simplified update script (I'm now using … Jan 31, 2015

README.md

nixrc

This is a collection of the configuration files that I use with NixOS, a Linux distribution inspired by purely functional programming languages.

These configuration files reflect how I use NixOS on a daily basis; as such, they contain a lot of peculiar code not written for general use. If you find some of the techniques I use in these files to be useful, feel free to use them as a template for your own NixOS configuration.

Organization

My configuration is organized with two goals in mind: First, the configuration of several computers that I own is unified into this one repository with minimal duplication of effort. Second, everything necessary to provision a new machine from scratch is included along with a script to ease initial installation.

Machines

The machines/ directory contains a separate NixOS module for each computer that I have configured with NixOS. Since each computer is used in different settings, it is only natural that each of these modules is slightly different.

Profiles

A number of different configuration profiles are defined as NixOS modules in the profiles/ directory. Each computer can import any number of different profiles. This minimizes the duplication of effort when two or more computers are commonly used for the same tasks. For instance, if I commonly use a printer from either my laptop or my desktop, I can import the printing.nix profile on those computers, while omitting it on my server.

Dotfiles

I keep various configuration files for userland applications in the dotfiles/ directory. This allows me to keep the configuration files that I find important, such as my VIM or Git configuration files, consistent across computers.

Note that NixOS does not provide any built-in support for managing userland dotfiles. I simply create the dotfiles as symbolic links from a startup script.

install.sh

I use the install.sh script to start a new installation from scratch. The script is not perfect, but it attempts to identify computers I own and use the appropriate hostname.

Makefile / rebuild.sh

The rebuild.sh script is interesting because whenever nixrc changes are applied by this script, the entire repository is copied to the /etc/nixos/ directory via the rsync utility. This is useful for keeping this Git repository in an un-privileged directory and then moving it to the appropriate privileged directory when needed.

License

As this repository does not really constitute a coherent product, I am releasing everything I have written here to the public domain without warranty of any kind. Note that some of the code in this repository may have been pulled from elsewhere; such code is the property of its respective copyright holder.