install: fix addVolume perm issue for some users
As reported in #5198, volume creation can fail with a permission error
for some macOS users (probably secondary user accounts?) Sudo appears
to be sufficient to avoid this.
While I'm here, I also updated the sudo invocation added in 079bde2ae
to use the _sudo explanation wrapper.
This commit is contained in:
parent
50a35860ee
commit
bf2ee3c565
|
@ -715,6 +715,7 @@ create_volume() {
|
||||||
# 6) getting special w/ awk may be fragile, but doing it to:
|
# 6) getting special w/ awk may be fragile, but doing it to:
|
||||||
# - save time over running slow diskutil commands
|
# - save time over running slow diskutil commands
|
||||||
# - skirt risk we grab wrong volume if multiple match
|
# - skirt risk we grab wrong volume if multiple match
|
||||||
|
_sudo "to create a new APFS volume '$NIX_VOLUME_LABEL' on $NIX_VOLUME_USE_DISK" \
|
||||||
/usr/sbin/diskutil apfs addVolume "$NIX_VOLUME_USE_DISK" "$NIX_VOLUME_FS" "$NIX_VOLUME_LABEL" -nomount | /usr/bin/awk '/Created new APFS Volume/ {print $5}'
|
/usr/sbin/diskutil apfs addVolume "$NIX_VOLUME_USE_DISK" "$NIX_VOLUME_FS" "$NIX_VOLUME_LABEL" -nomount | /usr/bin/awk '/Created new APFS Volume/ {print $5}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -738,7 +739,6 @@ await_volume() {
|
||||||
setup_volume() {
|
setup_volume() {
|
||||||
local use_special use_uuid profile_packages
|
local use_special use_uuid profile_packages
|
||||||
task "Creating a Nix volume" >&2
|
task "Creating a Nix volume" >&2
|
||||||
# DOING: I'm tempted to wrap this call in a grep to get the new disk special without doing anything too complex, but this sudo wrapper *is* a little complex, so it'll be a PITA unless maybe we can skip sudo on this. Let's just try it without.
|
|
||||||
|
|
||||||
use_special="${NIX_VOLUME_USE_SPECIAL:-$(create_volume)}"
|
use_special="${NIX_VOLUME_USE_SPECIAL:-$(create_volume)}"
|
||||||
|
|
||||||
|
@ -760,7 +760,8 @@ setup_volume() {
|
||||||
await_volume
|
await_volume
|
||||||
|
|
||||||
if [ "$(/usr/sbin/diskutil info -plist "$NIX_ROOT" | xmllint --xpath "(/plist/dict/key[text()='GlobalPermissionsEnabled'])/following-sibling::*[1]" -)" = "<false/>" ]; then
|
if [ "$(/usr/sbin/diskutil info -plist "$NIX_ROOT" | xmllint --xpath "(/plist/dict/key[text()='GlobalPermissionsEnabled'])/following-sibling::*[1]" -)" = "<false/>" ]; then
|
||||||
sudo /usr/sbin/diskutil enableOwnership "$NIX_ROOT"
|
_sudo "to set enableOwnership (enabling users to own files)" \
|
||||||
|
/usr/sbin/diskutil enableOwnership "$NIX_ROOT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: below is a vague kludge for now; I just don't know
|
# TODO: below is a vague kludge for now; I just don't know
|
||||||
|
|
Loading…
Reference in a new issue