So my previous laptop died during christmas 2017, so I needed a new machine. I was lucky enough to get my hands on a fairly recent macbook pro (mid 2012). The good: it’s got decent hardware, is sturdy, allright battery and the screen is the best I’ve ever had. The bad: it is not particularly freedom respecting, and might prove difficult to get some hardware to work well.

So, after some fumbling I have made this laptop sort of dual-boot GuixSD (I usually just call the distro Guix, even though that’s the package manager) and osx. It really is sort of, if I do nothing during boot I get Guix; if I hold alt for the EFI boot menu, I get osx and network options, but no Guix.

Here are the steps as I remember them:

I used several different guides to make this work. For more details they might be interesting:

First, in osx, I shrank the main partition (the only one shown, even though this mac had 3) using disk utility. Then created a guixsd live usb with etcher.

Then I restart the machine, hold alt/option while booting to get the EFI boot options menu. I got 2 boot options for the usb - I picked the first (this is mentioned in the guide, don’t know the significance of one over the other). After a little while you get the standard bash interface from the Guix live disk. I made one partition on the now free space after shrinking. For me this was /dev/sda4 (or disk0s4 in osx speak). I did not partition or format anything else.

After making the filesystem and mounting it I made a swapfile in the new root filesystem. I then mounted /dev/sda1 (the same disk osx uses for boot) to /boot/EFI and copied the example config with a lightweight desktop and EFI boot from the live disk; and modified it to fit my setup. I then ran through the rest of the Guix setup and initialised the system as per the manual.

2018-03-30: The warning has been fixed for some time, it was as simple as removing any changes to xorg modules or inputs drivers.

It finished fine and I rebooted into my new system. I then got merged my old config with the new one into what is now current, it can be found at my repository. As can be seen from my config I am running a nonfree kernel, mainly because of some intel drivers for wifi and I think screen.

The touchpad works, but on some boots it will only move the pointer along the y axis (up and down); the fix is to reboot or restart xorg-server until it works. Luckily this computer does not need to be rebooted every time I move, like my prebious one, so it is not such a hassle.

A solution to the touchpad is apparently to get xorg to use the mtrack driver instead of synaptic. I’ve made a definition for xf86-input-mtrack that builds on Guix, but I have to figure out how to make xorg choose it instead of synaptic (I’ve made an attempt in my config that doesn’t give the desired result).

Now, for the dual-booting to work properly I have /dev/sda1 set to be mounted to /boot/efi in my config, and I have the bootloader target point to /boot/efi. This works - until you boot into osx. :P

The solution here is to follow pandeiros advice on setting up boot in osx, BUT turn off the “System Integrity Projection” first (see the guide).

There are several things in this setup I’m not sure how or why works, especially the EFi is vodoo magic as far as I’m concerned. At the same time I don’t really care too much about it as long as it works.