Skip to content

myme/dotfiles

Repository files navigation

NixOS Configuration

This repository contains the NixOS system and user profile configuration files for my machines. For an overview and more thorough description, read NixOS: Confederation (myme.no).

I rarely install new machines and thus haven't really invested the time to automate this process in a good way. The steps under Installation are most likely borken or incomplete. Your best bet is to download and install NixOS following the regular documentation, then simply build and update using nixos-rebuild switch --flake ..

Installation

Install SSH keys on machine

Use a local keyboard and mouse or remote console to start up a shell on the machine. Then add public keys as desired to .ssh/authorized_keys for remote access.

$ mkdir .ssh
$ curl -o .ssh/authorized_keys https://github.com/myme.keys

Jump into dev shell

# shorthand for `nix develop` (with --extra-experimental-features)
./dev

Copy installation files to host

The following command will prompt for one of the deploy.nodes hosts to copy the installation files to.

$ nixbs-copy

Alternatively export NIX_INSTALL_HOST in the environment to override:

$ NIX_INSTALL_HOST=10.20.30.40 nixbs-copy

SSH to remote host

$ nixbs-ssh

Drop into dev shell

$ cd nixos
$ ./dev

Format disks with disko

$ sudo disko ./machine/<hostname>/disk.nix

Start NixOS installation

Begin the installation by invoking the install script, either on console or over SSH:

$ sudo nixbs-install

The command will prompt for a system profile to install.

Post-install

Installing emacs dependencies:

$ ~/.emacs.d/bin/doom sync

After launching emacs, install all-the-icons:

(all-the-icons-install-fonts t)

Updating

$ sudo nixos-rebuild <switch|test|build> --flake .

Non-NixOS Linux / Windows Subsystem for Linux (WSL)

Install

$ nixbs-build-home <machine>
$ ./result/activate

Update

Either use the build-home.sh script above or the following once Home Manager is installed:

$ home-manager <build|switch> --flake .#<machine>

Troubleshooting

Gnome

Some dconf settings seem to not be applied correctly. Particularly the custom binding p to swith to the workspace on the left.

Running the following resolves this (but is obviously annoying):

gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left '[]'
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['<Super>p']"