disko test

This commit is contained in:
DashieTM 2025-02-28 18:30:31 +01:00
parent 547ea3e7bb
commit 62e462a0df
4 changed files with 92 additions and 80 deletions

View file

@ -33,6 +33,7 @@
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
base16.url = "github:SenchoPens/base16.nix"; base16.url = "github:SenchoPens/base16.nix";
disko.url = "github:nix-community/disko/latest";
anyrun.url = "github:Kirottu/anyrun"; anyrun.url = "github:Kirottu/anyrun";
oxicalc.url = "github:DashieTM/OxiCalc"; oxicalc.url = "github:DashieTM/OxiCalc";
@ -80,7 +81,8 @@
}; };
overlays = [ overlays = [
inputs.nur.overlays.default inputs.nur.overlays.default
inputs.chaoticNyx.overlays.default]; inputs.chaoticNyx.overlays.default
];
}; };
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
system = currentSystem; system = currentSystem;
@ -94,7 +96,7 @@
overlays = [ overlays = [
inputs.nur.overlays.default inputs.nur.overlays.default
inputs.chaoticNyx.overlays.default inputs.chaoticNyx.overlays.default
]; ];
}; };
in rec { in rec {
dashNixLib = import ./lib { dashNixLib = import ./lib {

View file

@ -44,6 +44,7 @@
nixos = [ nixos = [
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.disko.nixosModules.disko
../base ../base
../home ../home
../modules ../modules

View file

@ -28,6 +28,14 @@
''; '';
}; };
defualtDiskId = lib.mkOption {
default = "TODO";
example = "/dev/disk/by-id/nvme-Force_MP510_19498249000129196385";
description = ''
The id of the disk to format
'';
};
cpu = lib.mkOption { cpu = lib.mkOption {
# TODO: how to enable arm? # TODO: how to enable arm?
default = "amd"; default = "amd";

View file

@ -3,35 +3,7 @@
config, config,
options, options,
... ...
}: let }: {
driveModule = lib.types.submodule {
options = {
name = lib.mkOption {
type = lib.types.str;
description = ''
The path of the drive.
Note that a / is already added at the beginning.
'';
default = "";
example = "drive2";
};
drive = lib.mkOption {
type = lib.types.attrsOf lib.types.anything;
description = "The attrs of the drive";
default = {};
example = {
device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4";
options = [
"noatime"
"nodiratime"
"discard"
];
};
};
};
};
in {
options.mods = { options.mods = {
drives = { drives = {
useSwap = { useSwap = {
@ -83,55 +55,84 @@ in {
config = ( config = (
lib.optionalAttrs (options ? fileSystems) { lib.optionalAttrs (options ? fileSystems) {
fileSystems = disko.devices = {
builtins.listToAttrs ( disk =
map ( {
{ main = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) {
name, device = "${config.conf.defaultDiskId}";
drive, type = "disk";
}: { content = {
name = "/" + name; type = "gpt";
value = drive; partitions = {
} root = {
) start = "33G";
config.mods.drives.extraDrives end = "30%";
) content = {
// (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { type = "filesystem";
"/" = { format = "btrfs";
device = "/dev/disk/by-label/ROOT"; mountpoint = "/";
fsType = "btrfs"; mountOptions = [
options = [ "noatime"
"noatime" "nodiratime"
"nodiratime" "discard"
"discard" ];
]; };
}; };
plainSwap = {
"/boot" = { start = "1G";
device = "/dev/disk/by-label/BOOT"; end = "33G";
fsType = "vfat"; content = {
options = [ type = "swap";
"rw" discardPolicy = "both";
"fmask=0022" resumeDevice = true;
"dmask=0022" };
"noatime" };
]; boot = {
}; start = "0G";
end = "1G";
"/home" = { content = {
device = "/dev/disk/by-label/HOME"; type = "filesystem";
fsType = "btrfs"; format = "vfat";
options = [ mountpoint = "/boot";
"noatime" mountOptions = [
"nodiratime" "rw"
"discard" "fmask=0022"
]; "dmask=0022"
}; "noatime"
}; ];
# TODO make this convert to choice of drives -> thanks to funny types this doesn't work... };
swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ };
{device = "/dev/disk/by-label/SWAP";} home = {
]; start = "30%";
end = "100%";
content = {
type = "filesystem";
format = "btrfs";
mountpoint = "/home";
mountOptions = [
"noatime"
"nodiratime"
"discard"
];
};
};
};
};
};
}
// builtins.listToAttrs (
map (
{
name,
drive,
}: {
name = "/" + name;
value = drive;
}
)
config.mods.drives.extraDrives
);
};
} }
); );
} }