Skip to content

A dendritic nix configuration to define immutable desktop and homelab systems with one click installation using flake-parts.

License

Notifications You must be signed in to change notification settings

RobbieJennings/nix-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

384 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robbie's NixOS Configuration

A dendritic nix configuration to define immutable desktop and homelab systems with one click installation using flake-parts.

🚀 Features

Core:

Desktop

Server ⚠️Experimental⚠️

🛠️ Usage

Installation

# Provision disks
sudo nix run --experimental-features "nix-command flakes" github:nix-community/disko/latest -- --mode destroy,format,mount --flake github:robbiejennings/nix-config#<system>
# Install NixOS
sudo nixos-install --flake github:robbiejennings/nix-config#<system>

Enabling Secrets

Encrypted secrets can be included using sops-nix. This requires the installed system have the necessary SSH keys as defined in .sops.yaml located in /root/.ssh/ for system level secrets and /home/<username>/.ssh/ for user level secrets.

These secrets can then be edited by generating age keys using sudo just generate-root-age or just generate-user-age. Each host or user has a single secret file located in the secrets/ directory of this project. Once these keys are generated secret files can be decrypted using just edit-secret <filename>.

With SSH keys and secrets in place, setting secrets.enable=true in a configuration will load decrypted secrets on installation whose filepaths are then consumed by various modules in this project.

Enabling Impermanence

Setting ìmpermenance.enable = true in a system configuration will cause the deletion of all files outside the nix store at boot time to ensure a clean environment on every startup. To persist files between boots add their paths to the persistence config option.

Adding Git Hooks

To add git hooks to your development environment run just hooks to enter the default development shell for this project which will automatically add formatting and static code analysis checks. This shell can be exited straight away.

Generating Options Documentation

To generate markdown documentation of all nixos and home-manager module options in this project run just docs. This will output home-manager-options.md and nixos-options.md into the docs/ directory.

📜 References

flake-parts

dendritic pattern

dendritic pattern additional documentation

defining k3s in pure nix

About

A dendritic nix configuration to define immutable desktop and homelab systems with one click installation using flake-parts.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •