From a6e6c85f06395a92062eb31753a8dd8f3b7e733c Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Tue, 29 Apr 2014 22:53:11 -0500 Subject: [PATCH] grub: Add support for detecting btrfs subvolumes --- nixos/modules/system/boot/loader/grub/grub.nix | 2 +- nixos/modules/system/boot/loader/grub/install-grub.pl | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix index bc19dd8c62fa..581b76f8fb21 100644 --- a/nixos/modules/system/boot/loader/grub/grub.nix +++ b/nixos/modules/system/boot/loader/grub/grub.nix @@ -28,7 +28,7 @@ let extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels timeout default devices fsIdentifier; path = (makeSearchPath "bin" [ - pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils + pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfsProgs ]) + ":" + (makeSearchPath "sbin" [ pkgs.mdadm pkgs.utillinux ]); diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl index 2615bc3ae11e..814ae7e05f7c 100644 --- a/nixos/modules/system/boot/loader/grub/install-grub.pl +++ b/nixos/modules/system/boot/loader/grub/install-grub.pl @@ -111,6 +111,13 @@ sub GrubFs { die "invalid fs identifier type\n"; } } + if ($fs->type eq "btrfs") { + $subvol = `mount | sed -n 's,^$fs->device on .*subvol=\([^,)]*\).*$,\1,p'` + if ($subvol eq "") { + $subvol = `btrfs subvol get-default $fs->mount | sed -n 's,^.*path \([^ ]*\) .*$,\1,p'` + } + $path = "/$subvol"; + } } if (not $search eq "") { $search = "search --set=drive$driveid " . $search;