I run Debian on my Thinkpad and wanted to take advantage of nix on there without also installing NixOS there, so here is added support for it.
83 lines
3.5 KiB
Markdown
83 lines
3.5 KiB
Markdown
# nixos-system-config
|
|
My NixOS configuration.
|
|
|
|
## 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.
|
|
|
|
## Screenshots
|
|
[Wallpaper](https://www.deviantart.com/view/279239085) modified with [gruvbox-factory](https://github.com/paulopacitti/gruvbox-factory).
|
|
|
|

|
|
|
|
## 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
|
|
### NixOS
|
|
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.
|
|
|
|
### Non-NixOS
|
|
Run the `non-nixos-install.sh` script. It will install both home-manager and nix.
|
|
Your user is assumed to be called "blank". You need to replace every instance of it
|
|
in case you want to use a different username.
|
|
|