summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2022-08-19 08:52:50 +0100
committerGitHub <noreply@github.com>2022-08-19 08:52:50 +0100
commit5bcd94a7ecc55007ff55b8f53664297316dc15a0 (patch)
tree604ac9dbbe507598caf37e4cfb9a7536235b6501
parente97ddb5138a8087895020ffa43e0cbed5af4c3bb (diff)
parentfc568cf797fdc4a726e2d961aa41d0dad1bbd004 (diff)
Merge pull request #12 from nix-community/flag-support
Add flag support
-rw-r--r--example/config-gpt-bios.nix33
-rw-r--r--example/config.nix1
-rw-r--r--example/default.nix8
-rw-r--r--example/stand-alone/configuration.nix34
-rw-r--r--example/stand-alone/tsp-disk.json22
-rw-r--r--lib/default.nix3
6 files changed, 70 insertions, 31 deletions
diff --git a/example/config-gpt-bios.nix b/example/config-gpt-bios.nix
new file mode 100644
index 0000000..9dfcffa
--- /dev/null
+++ b/example/config-gpt-bios.nix
@@ -0,0 +1,33 @@
+# Example to create a bios compatible gpt partition
+{
+ type = "devices";
+ content = {
+ sda = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ {
+ type = "partition";
+ start = "0";
+ end = "1M";
+ part-type = "primary";
+ flags = ["bios_grub"];
+ content.type = "noop";
+ }
+ {
+ type = "partition";
+ # leave space for the grub aka BIOS boot
+ start = "1M";
+ end = "100%";
+ part-type = "primary";
+ bootable = true;
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/";
+ };
+ }
+ ];
+ };
+ };
+}
diff --git a/example/config.nix b/example/config.nix
index 199412d..1a64b1c 100644
--- a/example/config.nix
+++ b/example/config.nix
@@ -24,6 +24,7 @@
part-type = "primary";
start = "1024MiB";
end = "100%";
+ flags = [ "bios_grub" ];
content = {
type = "luks";
algo = "aes-xts...";
diff --git a/example/default.nix b/example/default.nix
index f2826c9..bf8cd43 100644
--- a/example/default.nix
+++ b/example/default.nix
@@ -3,11 +3,13 @@
let
# TODO: get rid of NIX_PATH dependency here
pkgs = import <nixpkgs> {};
+ cfg = import ./config.nix;
+ #cfg = import ./config-gpt-bios.nix;
in
with import ../lib { inherit (pkgs) lib;};
{
- config = config (import ./config.nix);
- create = create (import ./config.nix);
- mount = mount (import ./config.nix);
+ config = config cfg;
+ create = create cfg;
+ mount = mount cfg;
}
diff --git a/example/stand-alone/configuration.nix b/example/stand-alone/configuration.nix
index 2ee1597..2a15c32 100644
--- a/example/stand-alone/configuration.nix
+++ b/example/stand-alone/configuration.nix
@@ -1,10 +1,32 @@
-{ pkgs, ... }:
+{ pkgs, lib, ... }:
let
- disko = (builtins.fetchGit {
- url = https://cgit.lassul.us/disko/;
- rev = "88f56a0b644dd7bfa8438409bea5377adef6aef4";
- }) + "/lib";
- cfg = builtins.fromJSON ./tsp-disk.json;
+ disko = import (builtins.fetchGit {
+ url = "https://github.com/nix-community/disko";
+ ref = "master";
+ }) {
+ inherit lib;
+ };
+ cfg = {
+ type = "devices";
+ content = {
+ sda = {
+ type = "table";
+ format = "msdos";
+ partitions = [{
+ type = "partition";
+ part-type = "primary";
+ start = "1M";
+ end = "100%";
+ bootable = true;
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/";
+ };
+ }];
+ };
+ };
+ };
in {
imports = [
(disko.config cfg)
diff --git a/example/stand-alone/tsp-disk.json b/example/stand-alone/tsp-disk.json
deleted file mode 100644
index 1d82c13..0000000
--- a/example/stand-alone/tsp-disk.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "type": "devices",
- "content": {
- "sda": {
- "type": "table",
- "format": "msdos",
- "partitions": [
- { "type": "partition",
- "start": "1M",
- "end": "100%",
- "bootable": true,
- "content": {
- "type": "filesystem",
- "format": "ext4",
- "mountpoint": "/"
- }
- }
- ]
- }
- }
-}
-
diff --git a/lib/default.nix b/lib/default.nix
index edc0062..66e667a 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -75,6 +75,9 @@ let {
${optionalString (x.bootable or false) ''
parted -s ${q.device} set ${toString q.index} boot on
''}
+ ${concatMapStringsSep "" (flag: ''
+ parted -s ${q.device} set ${toString q.index} ${flag} on
+ '') (x.flags or [])}
${create-f { device = q.device + toString q.index; } x.content}
'';