disko: add initial config

This commit is contained in:
Kabbone 2023-12-20 11:27:50 +01:00
parent 38c4f44dc5
commit 616b1154a4
Signed by: Kabbone
SSH Key Fingerprint: SHA256:A5zPB5I6u5V78V51c362BBdCwhDhfDUVbt7NfKdjWBY
4 changed files with 199 additions and 1 deletions

View File

@ -1,2 +1,30 @@
# nixos-config
# nixos-config #
## Install ##
### Patitioning ###
- Easiest is to run [disko](https://git.kabtop.de/Kabbone/nixos-config/raw/branch/main/disko/README.md)
- `Classic way:`
Partition disk with gdisk:
1. EFI Partition, size 512M, type "EF00", Label "NIXBOOT"
2. Root Partition, size 100%, type "8300", Label "NIXROOT"
### Installing ###
1. mount all the partitions and subvolumes to /mnt
2. generate initial nixos config
```# nixos-generate-config --root /mnt```
3. clone flake and check config
```
# cd /mnt/etc/nixos/
# git clone https://git.kabtop.de/Kabbone/nixos-config.git
```
4. install system
```# nixos-install --flake .#<host>```
5. reboot

27
disko/README.md Normal file
View File

@ -0,0 +1,27 @@
##Step by step##
1. Boot the [installer](https://nixos.org/download.html#nixos-iso)
2. Get disk name
```$ lsblk```
3. Get disko config
```
$ curl https://git.kabtop.de/Kabbone/nixos-config/raw/branch/main/disko/btrfs_luks.nix -o /tmp/disko-config.nix
```
4. Adjust device name
5. Let disko partition the disk
```
$ sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix
```
6. Check if it got mounted
```$ mount | grep /mnt```
7. Continue with NixOS installation
Filesystem definitions come from disko, hence "--no-filesystems"
`Alternative:` continue with normal hardware-config
```
$ nixos-generate-config --no-filesystems --root /mnt
$ mv /tmp/disko-config.nix /mnt/etc/nixos

71
disko/btrfs.nix Normal file
View File

@ -0,0 +1,71 @@
{
disko.devices = {
disk = {
nvme0n1 = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
name = "NIXBOOT";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"defaults"
];
};
};
root = {
size = "100%";
content = {
type = "btrfs";
name = "NIXROOT";
# disable settings.keyFile if you want to use interactive password entry
#passwordFile = "/tmp/secret.key"; # Interactive
settings = {
allowDiscards = true;
#keyFile = "/tmp/secret.key";
};
content = {
type = "btrfs";
extraArgs = [ "-f" ];
subvolumes = {
"@" = {
mountpoint = "/";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@home" = {
mountpoint = "/home";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@srv" = {
mountpoint = "/srv";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@nix" = {
mountpoint = "/nix";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@var" = {
mountpoint = "/var";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@swap" = {
mountpoint = "/swap";
swap.swapfile.size = "8G";
};
};
};
};
};
};
};
};
};
};
}

72
disko/btrfs_luks.nix Normal file
View File

@ -0,0 +1,72 @@
{
disko.devices = {
disk = {
nvme0n1 = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
name = "NIXBOOT";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"defaults"
];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
askPassword = true;
# disable settings.keyFile if you want to use interactive password entry
#passwordFile = "/tmp/secret.key"; # Interactive
settings = {
allowDiscards = true;
};
content = {
type = "btrfs";
name = "NIXROOT";
extraArgs = [ "-f" ];
subvolumes = {
"@" = {
mountpoint = "/";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@home" = {
mountpoint = "/home";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@srv" = {
mountpoint = "/srv";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@nix" = {
mountpoint = "/nix";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@var" = {
mountpoint = "/var";
mountOptions = [ "compress=zstd" "noatime" "ssd" "discard=async" ];
};
"@swap" = {
mountpoint = "/swap";
swap.swapfile.size = "8G";
};
};
};
};
};
};
};
};
};
};
}