yggdrasil: zfs prep

This commit is contained in:
Christoph Hollizeck 2026-01-31 14:54:01 +01:00
parent e642a10ec2
commit 3f746987b3
Signed by: Daholli
GPG key ID: 249300664F2AF2C7
6 changed files with 245 additions and 79 deletions

131
flake.lock generated
View file

@ -149,11 +149,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1769790358, "lastModified": 1769865383,
"narHash": "sha256-zO95CJkHD+SihC0vCS6B17+mVAgC5gT8CAezQ2ik8Kk=", "narHash": "sha256-nWaRnlYC/mjGLegMsnf5g87CqqMjVtsvM/vz7eV5MsA=",
"owner": "cachix", "owner": "cachix",
"repo": "devenv", "repo": "devenv",
"rev": "4bd7bbda7c267865d2d0cc31764e7c104e3a2218", "rev": "9b42a381972d3d734badb8001be0044064ab2795",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -367,7 +367,25 @@
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_4" "systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1705309234, "lastModified": 1705309234,
@ -769,11 +787,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1769802121, "lastModified": 1769866762,
"narHash": "sha256-P2KVccrXznyha83gPQeVJ3k+3+/hYXIPQ91DwuRmFF4=", "narHash": "sha256-OFTMhMUnJCg3woctP+qrWNM0ALeiTnGlbsC7eHStdDY=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "ec120d57328e5ae4bfc93a7e809ace47d98f2dc3", "rev": "db6114c6c53edc4a60695a12d7f857308b6cd6cd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1147,6 +1165,25 @@
"type": "github" "type": "github"
} }
}, },
"hytale-launcher": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1769747470,
"narHash": "sha256-spK/SWvBLGwP/NNvHLQaTAosXrwnMuz9A4vUa3miaGo=",
"owner": "JPyke3",
"repo": "hytale-launcher-nix",
"rev": "b549b4db497ef8a3c345b0d92d913d97fb2f48b3",
"type": "github"
},
"original": {
"owner": "JPyke3",
"repo": "hytale-launcher-nix",
"type": "github"
}
},
"import-tree": { "import-tree": {
"locked": { "locked": {
"lastModified": 1763762820, "lastModified": 1763762820,
@ -1497,11 +1534,11 @@
}, },
"nixpkgs-latest-factorio": { "nixpkgs-latest-factorio": {
"locked": { "locked": {
"lastModified": 1769859844, "lastModified": 1769866281,
"narHash": "sha256-MN+92iMaQnsNid5t/NImWK7Hu4/LuUOMVuTZOpPHDY8=", "narHash": "sha256-bHKvpOAggRZvTXoTR/AWq5sHlCbhG5ml7K5KENcRveA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4525a2af191cb89d829e0ca6dba4282a040e75a4", "rev": "54b154f971b71d260378b284789df6b272b49634",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1513,11 +1550,11 @@
}, },
"nixpkgs-latest-minecraft": { "nixpkgs-latest-minecraft": {
"locked": { "locked": {
"lastModified": 1769859844, "lastModified": 1769866281,
"narHash": "sha256-MN+92iMaQnsNid5t/NImWK7Hu4/LuUOMVuTZOpPHDY8=", "narHash": "sha256-bHKvpOAggRZvTXoTR/AWq5sHlCbhG5ml7K5KENcRveA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4525a2af191cb89d829e0ca6dba4282a040e75a4", "rev": "54b154f971b71d260378b284789df6b272b49634",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1559,11 +1596,11 @@
}, },
"nixpkgs-master": { "nixpkgs-master": {
"locked": { "locked": {
"lastModified": 1769859844, "lastModified": 1769866281,
"narHash": "sha256-MN+92iMaQnsNid5t/NImWK7Hu4/LuUOMVuTZOpPHDY8=", "narHash": "sha256-bHKvpOAggRZvTXoTR/AWq5sHlCbhG5ml7K5KENcRveA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4525a2af191cb89d829e0ca6dba4282a040e75a4", "rev": "54b154f971b71d260378b284789df6b272b49634",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1654,6 +1691,22 @@
} }
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": {
"lastModified": 1769461804,
"narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1769461804, "lastModified": 1769461804,
"narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
@ -1669,7 +1722,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1764374374, "lastModified": 1764374374,
"narHash": "sha256-naS7hg/D1yLKSZoENx9gvsPLFiNEOTcqamJSu0OEvCA=", "narHash": "sha256-naS7hg/D1yLKSZoENx9gvsPLFiNEOTcqamJSu0OEvCA=",
@ -1685,7 +1738,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1769268028, "lastModified": 1769268028,
"narHash": "sha256-mAdJpV0e5IGZjnE4f/8uf0E4hQR7ptRP00gnZKUOdMo=", "narHash": "sha256-mAdJpV0e5IGZjnE4f/8uf0E4hQR7ptRP00gnZKUOdMo=",
@ -1701,7 +1754,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_7": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1767364772, "lastModified": 1767364772,
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
@ -1717,7 +1770,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_8": { "nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1768127708, "lastModified": 1768127708,
"narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=",
@ -1794,6 +1847,7 @@
"hyprland": "hyprland", "hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins", "hyprland-plugins": "hyprland-plugins",
"hyprlock": "hyprlock", "hyprlock": "hyprlock",
"hytale-launcher": "hytale-launcher",
"import-tree": "import-tree", "import-tree": "import-tree",
"nh-flake": "nh-flake", "nh-flake": "nh-flake",
"niri": "niri", "niri": "niri",
@ -1803,7 +1857,7 @@
"nixos-images": "nixos-images", "nixos-images": "nixos-images",
"nixos-raspberrypi": "nixos-raspberrypi", "nixos-raspberrypi": "nixos-raspberrypi",
"nixos-wsl": "nixos-wsl", "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_5",
"nixpkgs-latest-factorio": "nixpkgs-latest-factorio", "nixpkgs-latest-factorio": "nixpkgs-latest-factorio",
"nixpkgs-latest-minecraft": "nixpkgs-latest-minecraft", "nixpkgs-latest-minecraft": "nixpkgs-latest-minecraft",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
@ -1811,7 +1865,7 @@
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"simple-nixos-mailserver": "simple-nixos-mailserver", "simple-nixos-mailserver": "simple-nixos-mailserver",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"systems": "systems_3", "systems": "systems_4",
"treefmt-nix": "treefmt-nix_2", "treefmt-nix": "treefmt-nix_2",
"zen-browser": "zen-browser", "zen-browser": "zen-browser",
"zig-overlay": "zig-overlay", "zig-overlay": "zig-overlay",
@ -1844,7 +1898,7 @@
"blobs": "blobs", "blobs": "blobs",
"flake-compat": "flake-compat_6", "flake-compat": "flake-compat_6",
"git-hooks": "git-hooks_3", "git-hooks": "git-hooks_3",
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_6"
}, },
"locked": { "locked": {
"lastModified": 1766321686, "lastModified": 1766321686,
@ -1862,7 +1916,7 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_6" "nixpkgs": "nixpkgs_7"
}, },
"locked": { "locked": {
"lastModified": 1769469829, "lastModified": 1769469829,
@ -1909,6 +1963,21 @@
} }
}, },
"systems_3": { "systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": { "locked": {
"lastModified": 1689347949, "lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
@ -1923,7 +1992,7 @@
"type": "github" "type": "github"
} }
}, },
"systems_4": { "systems_5": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -1962,7 +2031,7 @@
}, },
"treefmt-nix_2": { "treefmt-nix_2": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_7" "nixpkgs": "nixpkgs_8"
}, },
"locked": { "locked": {
"lastModified": 1769691507, "lastModified": 1769691507,
@ -2055,7 +2124,7 @@
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_9"
}, },
"locked": { "locked": {
"lastModified": 1769748063, "lastModified": 1769748063,
@ -2074,17 +2143,17 @@
"zig-overlay": { "zig-overlay": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_7", "flake-compat": "flake-compat_7",
"flake-utils": "flake-utils", "flake-utils": "flake-utils_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1769689205, "lastModified": 1769861710,
"narHash": "sha256-lVx+eckPioZtBg3FIhmHstqQUh+wTKFIJK8E5IdjbQk=", "narHash": "sha256-7WBmKtSvs+laiTJlBp7fVJGppIFmGvsEYHOv1myFisI=",
"owner": "mitchellh", "owner": "mitchellh",
"repo": "zig-overlay", "repo": "zig-overlay",
"rev": "8c20e76ce9751556dae0d1a9862ff18cda0daf1e", "rev": "d80fa53a23c4cf621cd72d9a6fb71392968ea04c",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -115,6 +115,7 @@
}; };
zen-browser.url = "github:0xc000022070/zen-browser-flake"; zen-browser.url = "github:0xc000022070/zen-browser-flake";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver";

View file

@ -1,12 +1,7 @@
{
config,
...
}:
let
in
{ {
flake.modules.nixos."hosts/loptland" = flake.modules.nixos."hosts/loptland" =
{ {
config,
inputs, inputs,
lib, lib,
pkgs, pkgs,

View file

@ -29,6 +29,8 @@ topLevel: {
postman postman
vlc vlc
ffmpeg ffmpeg
inputs.hytale-launcher.packages.x86_64-linux.default
]; ];
services.teamviewer.enable = true; services.teamviewer.enable = true;

View file

@ -0,0 +1,132 @@
{
flake.modules.nixos."hosts/yggdrasil" =
{
inputs,
...
}:
{
imports = [ inputs.disko.nixosModules.disko ];
boot.supportedFilesystems = [ "zfs" ];
networking.hostId = "007f0200";
services.zfs = {
autoScrub.enable = true;
autoSnapshot.enable = true;
trim.enable = true;
};
disko.devices = {
disk = {
x = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "zroot";
};
};
};
};
};
y = {
type = "disk";
device = "/dev/nvme1n1";
content = {
type = "gpt";
partitions = {
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "zroot";
};
};
};
};
};
};
zpool = {
zroot = {
type = "zpool";
mode = "mirror";
options = {
ashift = "12";
autotrim = "on";
};
rootFsOptions = {
canmount = "off";
checksum = "edonr";
compression = "zstd";
dnodesize = "auto";
mountpoint = "none";
normalization = "formD";
relatime = "on";
"com.sun:auto-snapshot" = "false";
};
datasets = {
"local" = {
type = "zfs_fs";
options.mountpoint = "none";
};
"local/home" = {
type = "zfs_fs";
mountpoint = "/home";
options = {
"com.sun:auto-snapshot" = "true";
};
};
"local/steam" = {
type = "zfs_fs";
mountpoint = "/steam";
options = {
"com.sun:auto-snapshot" = "false";
recordsize = "1M";
compression = "lz4";
casesensitivity = "insensitive";
};
postCreateHook = "chown cholli:users /steam";
};
"local/nix" = {
type = "zfs_fs";
mountpoint = "/nix";
options."com.sun:auto-snapshot" = "false";
};
"local/persist" = {
type = "zfs_fs";
mountpoint = "/persist";
options."com.sun:auto-snapshot" = "true";
};
"local/root" = {
type = "zfs_fs";
mountpoint = "/";
options."com.sun:auto-snapshot" = "false";
postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^zroot/local/root@blank$' || zfs snapshot zroot/local/root@blank";
};
};
};
};
};
};
}

View file

@ -1,16 +1,18 @@
{
config,
...
}:
let
in
{ {
flake.modules.nixos."hosts/yggdrasil" = flake.modules.nixos."hosts/yggdrasil" =
{ lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
boot = { boot = {
zfs.package = pkgs.zfs_2_4;
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxPackages_latest;
extraModulePackages = with config.boot.kernelPackages; [ r8125 ];
blacklistedKernelModules = [ "r8169" ];
loader = { loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
@ -29,41 +31,6 @@ in
}; };
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/b1a956f4-91d5-456e-a92b-be505bb719bd";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/B4D4-8BA0";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
"/storage" = {
device = "/dev/disk/by-uuid/c3c1dec1-7716-4c37-a3f2-bb60f9af84fd";
fsType = "ext4";
};
"/var/lib/bluetooth" = {
device = "/persist/var/lib/bluetooth";
options = [
"bind"
"noauto"
"x-systemd.automount"
];
noCheck = true;
};
};
swapDevices = [
{ device = "/dev/disk/by-uuid/4bec00ec-e9eb-4034-836a-ecf15e0bb40e"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
hardware.cpu.amd.updateMicrocode = true; hardware.cpu.amd.updateMicrocode = true;