mirror of
https://github.com/nix-community/disko.git
synced 2024-09-17 09:37:17 +03:00
types: fix negative relative disk size
This commit is contained in:
parent
1668efc14a
commit
417ad31ca5
27
example/negative-size.nix
Normal file
27
example/negative-size.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{ disks ? [ "/dev/vdb" "/dev/vdc" ], ... }: {
|
||||||
|
disk = {
|
||||||
|
disk0 = {
|
||||||
|
device = builtins.elemAt disks 0;
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "table";
|
||||||
|
format = "gpt";
|
||||||
|
partitions = [
|
||||||
|
{
|
||||||
|
name = "nix";
|
||||||
|
type = "partition";
|
||||||
|
part-type = "primary";
|
||||||
|
start = "0%";
|
||||||
|
end = "-10MiB";
|
||||||
|
bootable = true;
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
11
tests/negative-size.nix
Normal file
11
tests/negative-size.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# this is a regression test for https://github.com/nix-community/disko/issues/52
|
||||||
|
{ pkgs ? (import <nixpkgs> { })
|
||||||
|
, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest
|
||||||
|
}:
|
||||||
|
makeDiskoTest {
|
||||||
|
disko-config = ../example/negative-size.nix;
|
||||||
|
testBoot = false;
|
||||||
|
extraTestScript = ''
|
||||||
|
machine.succeed("mountpoint /mnt");
|
||||||
|
'';
|
||||||
|
}
|
10
types.nix
10
types.nix
@ -394,7 +394,7 @@ rec {
|
|||||||
readOnly = true;
|
readOnly = true;
|
||||||
type = types.functionTo types.str;
|
type = types.functionTo types.str;
|
||||||
default = dev: ''
|
default = dev: ''
|
||||||
parted -s ${dev} mklabel ${config.format}
|
parted -s ${dev} -- mklabel ${config.format}
|
||||||
${concatMapStrings (partition: partition._create dev config.format) config.partitions}
|
${concatMapStrings (partition: partition._create dev config.format) config.partitions}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@ -480,18 +480,18 @@ rec {
|
|||||||
type = types.functionTo (types.functionTo types.str);
|
type = types.functionTo (types.functionTo types.str);
|
||||||
default = dev: type: ''
|
default = dev: type: ''
|
||||||
${optionalString (type == "gpt") ''
|
${optionalString (type == "gpt") ''
|
||||||
parted -s ${dev} mkpart ${config.name} ${diskoLib.maybeStr config.fs-type} ${config.start} ${config.end}
|
parted -s ${dev} -- mkpart ${config.name} ${diskoLib.maybeStr config.fs-type} ${config.start} ${config.end}
|
||||||
''}
|
''}
|
||||||
${optionalString (type == "msdos") ''
|
${optionalString (type == "msdos") ''
|
||||||
parted -s ${dev} mkpart ${config.part-type} ${diskoLib.maybeStr config.fs-type} ${diskoLib.maybeStr config.fs-type} ${config.start} ${config.end}
|
parted -s ${dev} -- mkpart ${config.part-type} ${diskoLib.maybeStr config.fs-type} ${diskoLib.maybeStr config.fs-type} ${config.start} ${config.end}
|
||||||
''}
|
''}
|
||||||
# ensure /dev/disk/by-path/..-partN exists before continuing
|
# ensure /dev/disk/by-path/..-partN exists before continuing
|
||||||
udevadm trigger --subsystem-match=block; udevadm settle
|
udevadm trigger --subsystem-match=block; udevadm settle
|
||||||
${optionalString (config.bootable) ''
|
${optionalString (config.bootable) ''
|
||||||
parted -s ${dev} set ${toString config.index} boot on
|
parted -s ${dev} -- set ${toString config.index} boot on
|
||||||
''}
|
''}
|
||||||
${concatMapStringsSep "" (flag: ''
|
${concatMapStringsSep "" (flag: ''
|
||||||
parted -s ${dev} set ${toString config.index} ${flag} on
|
parted -s ${dev} -- set ${toString config.index} ${flag} on
|
||||||
'') config.flags}
|
'') config.flags}
|
||||||
# ensure further operations can detect new partitions
|
# ensure further operations can detect new partitions
|
||||||
udevadm trigger --subsystem-match=block; udevadm settle
|
udevadm trigger --subsystem-match=block; udevadm settle
|
||||||
|
Loading…
Reference in New Issue
Block a user