diff --git a/hosts/cm.nix b/hosts/cm.nix index 7aae9a1..3e14846 100644 --- a/hosts/cm.nix +++ b/hosts/cm.nix @@ -9,6 +9,7 @@ ../modules/homebrew.nix ../modules/account.nix ../modules/rosetta.nix + ../modules/elasticsearch-volume.nix ]; }; diff --git a/modules/elasticsearch-volume.nix b/modules/elasticsearch-volume.nix new file mode 100644 index 0000000..291f2e1 --- /dev/null +++ b/modules/elasticsearch-volume.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: + +let + volume = "elasticsearch"; + sectors = "131072"; + ensureRamdisk = pkgs.writeShellScript "ensure-elasticsearch-volume" '' + set -euo pipefail + + if [ ! -d "/Volumes/${volume}" ]; then + device=$(/usr/bin/hdiutil attach -nomount ram://${sectors} | tr -d '[:space:]') + /usr/sbin/diskutil erasevolume APFS "${volume}" "$device" + fi + + /bin/mkdir -p "/Volumes/${volume}" + /usr/sbin/chown mostlyobvious:staff "/Volumes/${volume}" + /bin/chmod 755 "/Volumes/${volume}" + ''; +in +{ + launchd.daemons.elasticsearch-volume = { + command = "${ensureRamdisk}"; + serviceConfig.RunAtLoad = true; + }; +}