1
Fork 0
nixos-system-config/README.md

78 lines
3.2 KiB
Markdown
Raw Normal View History

2023-06-25 12:44:09 +02:00
# nixos-system-config
My NixOS configuration.
2023-06-25 12:44:09 +02:00
## About
This is the NixOS configuration that I daily drive on my system. Feel free to use,
modify and share this configuration to your heart's content, no attribution required.
2023-06-25 12:44:09 +02:00
## Screenshots
[Wallpaper](https://www.deviantart.com/view/279239085) modified with [gruvbox-factory](https://github.com/paulopacitti/gruvbox-factory).
todo
## Layout
```
├── assets ; Images used by the config and repo
│   └── wallpaper.png
├── flake.lock
├── flake.nix ; Entry point
├── machines ; Machine specific configuration
│   └── workstation
│   ├── configuration.nix
│   ├── hardware-configuration.nix ; Modified hardware configuration
│   └── persist.nix ; Impermanence configuration
├── packages ; Sets of packages to install and configure
│   ├── sets
│   │   ├── games.nix
│   │   └── ...
│   └── wm ; Package sets and basic config for WM and DE
│   ├── hyprland.nix
│   └── ...
├── README.md
├── secrets ; Git ignored folder to store confidentials
│   └── hu
│   └── pass ; Hashed password file for user
└── users
└── hu ; User specific configuration
├── packages ; Package configurations
│   ├── firefox.nix ; Configurations can be for NixOS or home-manager
│   ├── ...
│   └── zsh
│   ├── config ; Non-nix package config directory
│   │   └── conf.d
│   ├── zsh-home.nix ; For home-manager
│   └── zsh.nix ; For NixOS
├── persist.nix ; Impermanence configuration for the user
└── user.nix
```
## Installing
This configuration uses impermanence with btrfs snapshots so you'll have to partition
your system in a certain way.
First you'll need this partition layout, assuming you're installing on `nvme0n1`.
```
DEVICE FILESYSTEM PURPOSE
/dev/nvme0n1
├─/dev/nvme0n1p1 vfat EFI partition
└─/dev/nvme0n1p2 btrfs Partition to house all the subvolumes
```
Inside of the btrfs root volume we're going to need 2 subvolumes.
```
SUBVOLUME MOUNT PURPOSE
root / Impermanent data
nix /nix Permanent data
```
You'll also need to create a read-only snapshot of the `root` subvolume
and call it `root-blank`.
After you've mounted all the subvolumes and EFI partition (`/boot`) in `/mnt`
clone this repository in to `/mnt/nix/config`. Adjust all the block ids of the partitions
in `hardware-configuration.nix` and create a hashed password using `mkpasswd` and store it
in the `secrets/{user}` directory as `pass`.
Finally, in the config directory run `nixos-install --flake '.#'`, reboot and you're done.