Raspberry Pi
Also consult the page NixOS_on_ARM
Status
The code in master as of June 2015 should be able to prepare a bootable NixOS for Raspberry PI 2.
There are still some drawbacks:
- NixOS does not provide a /boot/config.txt (the FAT32 partition).
Making NixOS work in the Raspberry PI 2 is mainly the result of the recent work of ambro718, Dezgeg and viric (#nixos@irc.freenode.net).
Download
If you want to test, you can flash this 4GB SD image (DOS partition table + fat32 + ext4 rootfs): link (viric) Template:Notice
Then you should be able to nixos-rebuild any configuration.nix changes.
The image is the result of a "nixos-install" alone. No root password has been set, and it does not include a nixpkgs checkout or channel.
In fact I (viric) created the FS into a NBD, not a real SD, to create this image.
Related Details
For reference, below is the content of /etc/nixos/configuration.nix extracted from the image:
{pkgs, config, ...}:
{
boot.consoleLogLevel = 7;
boot.loader.grub.enable = false;
boot.loader.generationsDir.enable = false;
boot.loader.raspberryPi.enable = true;
boot.loader.raspberryPi.version = 2;
boot.extraTTYs = [ "ttyAMA0" ];
boot.kernelPackages = pkgs.linuxPackages_rpi;
boot.kernelParams = [
#"coherent_pool=6M"
#"smsc95xx.turbo_mode=N"
"dwc_otg.lpm_enable=0"
"console=ttyAMA0,115200"
"root=/dev/mmcblk0p2"
"rootfstype=ext4"
"rootwait"
#"console=tty1"
"elevator=deadline"
];
# cpufrequtils doesn't build on ARM
powerManagement.enable = false;
fileSystems = {
"/boot" = { device = "/dev/mmcblk0p1"; fsType = "vfat"; };
"/" = { device = "/dev/mmcblk0p2"; fsType = "ext4"; };
};
networking.hostName = "pi2";
services.xserver.enable = false;
services.openssh = {
enable = true;
# permitRootLogin = "yes";
passwordAuthentication = false;
};
services.nixosManual.enable = false;
nixpkgs.config = {
platform = pkgs.platforms.raspberrypi2;
allowUnfree = true;
};
nix.buildCores = 4;
nix.binaryCaches = [ ];
environment.systemPackages = [
pkgs.ts
pkgs.vim
pkgs.git
pkgs.pigz
pkgs.cjdns
pkgs.pv
pkgs.lzop
pkgs.nbd
];
security.sudo = {
enable = true;
wheelNeedsPassword = false;
};
}