NixOS en un MacBook Pro M1 Max: guia completa


23 de febrero de 2026

NixOS corriendo bare metal en un MacBook Pro 16" con M1 Max. Suena a locura pero en 2026 es perfectamente viable. Este post cubre el estado real del soporte, como se instala, que funciona y que no, y la configuracion completa con flakes.

El ecosistema: Asahi Linux + nixos-apple-silicon

Todo el soporte de Linux en Apple Silicon descansa sobre el trabajo monumental de Asahi Linux. El proyecto lleva activo desde 2021 y ha conseguido algo que muchos creian imposible: drivers open-source para hardware Apple con certificaciones oficiales de conformidad.

Para NixOS especificamente, existe nixos-apple-silicon (originalmente de tpwrules, migrado a nix-community en mayo 2025). No es un fork de NixOS sino un modulo que importas en tu flake. Incluye:

Los numeros hablan: 1395 estrellas, 142 forks, ultimo commit el 19 de febrero de 2026 (kernel asahi 6.18.10-1). Releases regulares cada pocas semanas.

Estado del hardware en el MacBook Pro 16" M1 Max

Vamos al grano. Datos directos de la documentacion oficial de Asahi.

Lo que funciona

Lo que NO funciona (todavia)

La limitacion mas relevante para el dia a dia es Thunderbolt/DP Alt Mode. Si necesitas multiples monitores externos, solo puedes usar el HDMI integrado. Para desarrollo con un monitor externo via HDMI, es suficiente.

Instalacion paso a paso

Apple Silicon requiere siempre un macOS stub para arrancar. Sera dual boot si o si, aunque puedes dejar macOS en los huesos (~70-100GB).

Fase 1: Preparar UEFI desde macOS

# Desde Terminal.app en macOS (como admin)
curl https://alx.sh | sh

El script te guia:

  1. Redimensionar la particion de macOS (dejar espacio para NixOS)
  2. Instalar en el espacio libre
  3. Elegir "UEFI environment only"
  4. Nombrar la instalacion "NixOS"
  5. Configurar seguridad (permissive mode, custom boot object)

Fase 2: Instalar NixOS desde USB

Construir la ISO del instalador (o descargarla de releases):

git clone https://github.com/nix-community/nixos-apple-silicon/
cd nixos-apple-silicon
nix build --extra-experimental-features 'nix-command flakes' \
  .#installer-bootstrap -o installer -j4 -L
dd if=installer/iso/nixos-*.iso of=/dev/sdX bs=4M status=progress

Arrancar con USB, particionar, montar y configurar:

# Particionar
sgdisk /dev/nvme0n1 -n 0:0 -s
mkfs.ext4 -L nixos /dev/nvme0n1pX  # sustituir X por la particion correcta

# Montar
mount /dev/disk/by-label/nixos /mnt
mkdir -p /mnt/boot
mount /dev/disk/by-partuuid/$(cat /proc/device-tree/chosen/asahi,efi-system-partition) /mnt/boot

# Generar config base
nixos-generate-config --root /mnt
cp -r /etc/nixos/apple-silicon-support /mnt/etc/nixos/

Conectar WiFi con iwctl, instalar con nixos-install, reiniciar. Hecho.

Configuracion con flakes

Aqui es donde NixOS brilla. Un flake para el MacBook Pro M1 Max:

# flake.nix
{
  description = "NixOS en MacBook Pro M1 Max";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    nixos-apple-silicon.url = "github:nix-community/nixos-apple-silicon";
    # NO usar inputs.nixpkgs.follows si quieres el cache binario
  };

  outputs = { nixpkgs, nixos-apple-silicon, ... }: {
    nixosConfigurations.macbook = nixpkgs.lib.nixosSystem {
      system = "aarch64-linux";
      modules = [
        nixos-apple-silicon.nixosModules.apple-silicon-support
        ./hosts/macbook/configuration.nix
        ./hosts/macbook/hardware-configuration.nix
      ];
    };
  };
}

La configuration.nix esencial:

{ config, pkgs, lib, ... }:
{
  # Boot -- U-Boot NO soporta EFI variables
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = false;

  # Firmware WiFi (extraido de macOS durante instalacion)
  hardware.asahi.peripheralFirmwareDirectory = ./firmware;

  # WiFi -- iwd, NO wpa_supplicant
  networking.wireless.iwd = {
    enable = true;
    settings.General.EnableNetworkConfiguration = true;
  };

  # Cache binario de Asahi (MUY recomendado)
  nix.settings = {
    extra-substituters = [ "https://nixos-apple-silicon.cachix.org" ];
    extra-trusted-public-keys = [
      "nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20="
    ];
  };

  # Fix layout teclado (backtick/tilde swap)
  boot.extraModprobeConfig = ''
    options hid_apple iso_layout=0
  '';
}

Nota sobre inputs.nixpkgs.follows: si haces que nixos-apple-silicon siga tu nixpkgs, el cache binario de Cachix NO funcionara (los hashes cambian). Decidir entre coherencia de versiones o velocidad de build. Compilar el kernel Asahi desde cero lleva tiempo. Con el cache, es un download.

Lo que el modulo configura automaticamente

No hace falta tocarlo, pero conviene saberlo:

Consideraciones de almacenamiento

Con 1TB de SSD interno:

Detalle interesante: Apple's SSDs son lentos procesando flush requests (decenas de ms). El kernel Asahi tiene un parametro nvme_apple.flush_interval para coalescer flushes. El modulo NixOS lo pone a 0 por seguridad.

M1 Max vs M1 base: que cambia

A nivel de drivers, nada. En la tabla de Asahi, M1 Pro/Max/Ultra comparten exactamente la misma columna (T600x). La diferencia es hardware puro:

M1 M1 Max
CPU cores 8 (4P+4E) 10 (8P+2E)
GPU cores 8 32
RAM unificada 8-16 GB 32-64 GB
Puertos USB-C 2 3 + MagSafe
HDMI No Si
Lector SD No Si
Chasis 16" No Si (mejor thermal)

Mismos drivers, 4x GPU, mas puertos, mejor refrigeracion. Para desarrollo y compilaciones, la diferencia de CPU y RAM es significativa.

Conclusion

NixOS en un MacBook Pro M1 Max es una combinacion seria. Hardware potente con drivers open-source maduros, gestion declarativa del sistema con flakes, y un ecosistema de soporte activo. La unica limitacion real para el dia a dia es la falta de Thunderbolt/DP Alt Mode para monitores externos (solo HDMI).

Si ya usas NixOS con flakes, anadir un host Apple Silicon es anadir un modulo a tu flake. Si vienes de macOS, es el camino mas limpio hacia Linux en hardware Apple.

Recursos:

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario