Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/felschr/nixos-config

Mirror of my NixOS configuration on GitLab
https://github.com/felschr/nixos-config

dotfiles nix-dotfiles nix-flake nixos-configuration

Last synced: about 14 hours ago
JSON representation

Mirror of my NixOS configuration on GitLab

Awesome Lists containing this project

README

        

# felschr's NixOS configuration

## Installation

Clone the configuration into `/etc/nixos`.

On a new machine run:

```sh
scripts/setup-partitions
```

Then move the resulting `/mnt/etc/nixos/hardware-configuration.nix` to `./hardware/.nix`.
Update the configuration according to the script output, if necessary. Btrfs mount options likely need to be added, for example.
Copy the configuration from `/etc/nixos` to `/mnt/etc/nixos`.

Reference this hardware config in a `nixosConfigurations.` section in `flake.nix`.

Now set up a device key that will be used by agenix.
Create a new key and re-encrypt the secrets on an existing device & pull the changes.
To create a new key run:
```sh
mkdir -p /mnt/etc/secrets/initrd
ssh-keygen -t ed25519 -N "" -f /mnt/etc/secrets/initrd/ssh_host_ed25519_key
```

You will likely need to temporarily set `age.identityPaths` for the installation to succeed:

```sh
age.identityPaths = "/etc/secrets/initrd/ssh_host_ed25519_key";
```

To install run the following command where `` matches `outputs.nixosConfigurations.` in `flake.nix`:

```sh
nixos-install --flake '/mnt/etc/nixos#'
```

After the installation finished, set a password for the user:
```
passwd
```

## Updating

Update all flake inputs:

```sh
nix flake update
```

Update a specific flake input:

```
nix flake lock --update-input
```

## Rebuilding the system

Rebuild the system:

```sh
sudo nixos-rebuild switch
```

Rebuild the system for a remote machine:

```sh
sudo nixos-rebuild switch --flake '/etc/nixos#' --target-host user@hostname --use-remote-sudo
```