Nixos configuration
Find a file
2024-06-12 19:53:29 +07:00
hardware-configuration homeserver: added hardware configuration 2024-06-12 19:25:48 +07:00
home nvim: added nil ls config 2024-06-12 19:52:07 +07:00
options nixos: fix missing options 2024-06-12 18:22:03 +07:00
profiles nvim: fix missing dependencies 2024-06-12 19:25:48 +07:00
secrets copilot: added to sops-nix secret 2024-06-12 19:19:13 +07:00
system openssh: added fail2ban settings 2024-06-12 19:53:29 +07:00
flake.lock Exposes repository to public 2024-06-12 09:54:11 +07:00
flake.nix fix: gui apps not included in options 2024-06-12 18:41:09 +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>