130 lines
3.7 KiB
Nix
130 lines
3.7 KiB
Nix
# Full server with 3 nvme disks, RAID0, BTRFS + EXT4
|
|
#
|
|
# /dev/nvme0n1
|
|
# ├── /boot (EFI, 1GB, vfat)
|
|
# ├── BTRFS
|
|
# ├ ├── subvol=@system → / (compress=zstd:1)
|
|
# ├ ├── subvol=@nix → /nix (compress=zstd:1)
|
|
# ├ ├── subvol=@home → /home (compress=zstd:1)
|
|
# ├ ├── subvol=@media → /mnt/media (compress=zstd:1)
|
|
# ├ ├── subvol=@backup → /mnt/backup (compress=no)
|
|
# ├ ├── subvol=@databases → /mnt/databases (nodatacow,compress=no)
|
|
# ├ ├── subvol=@snapshots-home
|
|
# ├ ├── subvol=@snapshots-system
|
|
# ├ └── subvol=@snapshots-databases
|
|
# └── swap (4GB)
|
|
#
|
|
# Do not remove:
|
|
# NEEDEDFORBOOT:/boot;/nix;/home;/mnt/databases;/mnt/medias
|
|
#
|
|
|
|
{
|
|
disko.devices = {
|
|
disk = {
|
|
|
|
# NVME1 - Main disk
|
|
main = {
|
|
type = "disk";
|
|
device = "/dev/nvme0n1";
|
|
content = {
|
|
type = "gpt";
|
|
partitions = {
|
|
|
|
# EFI
|
|
boot = {
|
|
size = "1G";
|
|
type = "EF00";
|
|
content = {
|
|
type = "filesystem";
|
|
format = "vfat";
|
|
mountpoint = "/boot";
|
|
mountOptions = [
|
|
"defaults"
|
|
"umask=0077"
|
|
];
|
|
};
|
|
};
|
|
|
|
# Main disk
|
|
system = {
|
|
size = "100%";
|
|
end = "-32";
|
|
content = {
|
|
type = "btrfs";
|
|
extraArgs = [ "-f" ]; # Force overwrite
|
|
subvolumes = {
|
|
|
|
# Root partition
|
|
"@system" = {
|
|
mountpoint = "/";
|
|
mountOptions = [
|
|
"compress=zstd:1"
|
|
"noatime"
|
|
];
|
|
};
|
|
|
|
# Nix store
|
|
"@nix" = {
|
|
mountpoint = "/nix";
|
|
mountOptions = [
|
|
"compress=zstd:1"
|
|
"noatime"
|
|
];
|
|
};
|
|
|
|
# Files from home directories (little files, compressed, snapshotted)
|
|
"@home" = {
|
|
mountpoint = "/home";
|
|
mountOptions = [
|
|
"compress=zstd:1"
|
|
"noatime"
|
|
];
|
|
};
|
|
|
|
# Media files (compressed, not snapshotted)
|
|
"@media" = {
|
|
mountpoint = "/mnt/media";
|
|
mountOptions = [
|
|
"compress=zstd:1"
|
|
"noatime"
|
|
];
|
|
};
|
|
|
|
# Backup files (not compressed - already compressed by backup tool, not snapshotted)
|
|
"@backup" = {
|
|
mountpoint = "/mnt/backup";
|
|
mountOptions = [
|
|
"compress=no"
|
|
"noatime"
|
|
];
|
|
};
|
|
|
|
# Databases files (nodatacow, not compressed)
|
|
"@databases" = {
|
|
mountpoint = "/mnt/databases";
|
|
mountOptions = [
|
|
"nodatacow"
|
|
"noatime"
|
|
];
|
|
};
|
|
|
|
# Snapshots (not mounted)
|
|
"@snapshots-home" = { };
|
|
"@snapshots-system" = { };
|
|
"@snapshots-databases" = { };
|
|
};
|
|
};
|
|
};
|
|
swap = {
|
|
size = "4G";
|
|
content = {
|
|
type = "swap";
|
|
randomEncryption = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|