disko: add initial config
This commit is contained in:
parent
38c4f44dc5
commit
616b1154a4
30
README.md
30
README.md
@ -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
27
disko/README.md
Normal 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
71
disko/btrfs.nix
Normal 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
72
disko/btrfs_luks.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user