Nixos configuration
Find a file
2024-07-26 20:10:32 +07:00
hardware-configuration homeserver: added missing intel gpu drivers 2024-07-26 15:53:53 +07:00
home hyprland: default terminal moved to foot 2024-07-26 20:10:32 +07:00
options foot: added config 2024-07-26 20:03:25 +07:00
profiles foot: added config 2024-07-26 20:03:25 +07:00
secrets mongodb-compass: added config 2024-07-19 12:14:52 +07:00
system hyprland: default terminal moved to foot 2024-07-26 20:10:32 +07:00
.sops.yaml sops: added new secret file for caddy 2024-06-13 13:28:08 +07:00
flake.lock nixos: update lockfile 2024-07-22 17:07:50 +07:00
flake.nix wallust: build now using pinned rustc version 2024-07-10 08:53:11 +07:00
LICENSE Initial commit 2024-06-12 09:51:27 +07:00
README.md docs: added README.md 2024-06-12 11:15:15 +07:00

Nixos Configuration

Nixos Configuration Repository

Directories

hardware-configuration

Contains the hardware configuration for each machine.

profiles

Control plane for each machine. Each profile contains the configuration and features to be enabled for each machine.

home

Contains the configuration/implementation at user level. As much as possible, configuration should be done in here to reduce surface of attack in the system, unless requiring system-wide access like dbus or kernel modules, or root needs access to the programs.

options

Contains the options definition to toggle features in the system. Used by profiles to enable or disable features.

Options are meant to be shared between system and home. Hence, why the definitions are put in their own folder.

secrets

Contains the secrets for the system. Uses sops-nix to encrypt the secrets.

system

Contains system-wide configuration and implementation. Unless requiring system access, it's discouraged to put extended configurations here. Only parts that require system access allowed to be here.

Installation

Fresh Installation

On new machine, copy this repo, copy the hardware-configuration.nix from /etc/nixos/hardware-configuration.nix to ./hardware-configuration/<hostname>.nix.

If creating new profile and hostname, create a new <profile>.nix in ./profiles and create a new nixosConfiguration.<hostname> option in flake.nix and re-target the profile-path and hardware-configuration variable (specialArgs) to the new files.

Mount the root drive to /mnt, then run the following command:

nixos-install --flake /path/to/repository#<hostname>

Reinstall

If fresh from installation disk, Mount the target disk to /mnt and run the following command (Only on reinstalls):

nixos-install --flake https://github.com/tigorlazuardi/nixos#<hostname>

# There are 2 hostnames available in this repo: 'castle' or 'fort'

From Existing Installation

Same steps as Fresh Installation, but no need to mount the root drive.

Then run the following command:

sudo nixos-rebuild switch --flake /path/to/repository#<hostname>