From 9ba735714a6c5c445d145ca4d5df3fe698133e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 8 Sep 2010 17:15:31 +0000 Subject: [PATCH] Adding a system-tarball expression for the sheevaplug (which a previous commit already put a reference to) svn path=/nixos/branches/stdenv-updates/; revision=23690 --- .../cd-dvd/system-tarball-sheevaplug.nix | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 modules/installer/cd-dvd/system-tarball-sheevaplug.nix diff --git a/modules/installer/cd-dvd/system-tarball-sheevaplug.nix b/modules/installer/cd-dvd/system-tarball-sheevaplug.nix new file mode 100644 index 000000000000..b834ae3ab3d3 --- /dev/null +++ b/modules/installer/cd-dvd/system-tarball-sheevaplug.nix @@ -0,0 +1,190 @@ +# This module contains the basic configuration for building a NixOS +# installation CD. + +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + # A dummy /etc/nixos/configuration.nix in the booted CD that + # rebuilds the CD's configuration (and allows the configuration to + # be modified, of course, providing a true live CD). Problem is + # that we don't really know how the CD was built - the Nix + # expression language doesn't allow us to query the expression being + # evaluated. So we'll just hope for the best. + dummyConfiguration = pkgs.writeText "configuration.nix" + '' + {config, pkgs, ...}: + + { + require = [ ]; + + # Add your own options below and run "nixos-rebuild switch". + # E.g., + # services.sshd.enable = true; + } + ''; + + + pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; + + options = { + + system.nixosVersion = mkOption { + default = "${builtins.readFile ../../../VERSION}"; + description = '' + NixOS version number. + ''; + }; + }; + + # A clue for the uboot loading + kernelParams = pkgs.writeText "kernel-params.txt" '' + Kernel Parameters: + init=${config.system.build.bootStage2} + systemConfig=${config.system.build.toplevel} + ${toString config.boot.kernelParams} + ''; + + +in + +{ + require = + [ options + ./system-tarball.nix + ../../hardware/network/rt73.nix + ]; + + # Disable some other stuff we don't need. + security.sudo.enable = false; + + # Include only the en_US locale. This saves 75 MiB or so compared to + # the full glibcLocales package. + i18n.supportedLocales = ["en_US.UTF-8/UTF-8" "en_US/ISO-8859-1"]; + + # Include some utilities that are useful for installing or repairing + # the system. + environment.systemPackages = + [ pkgs.subversion # for nixos-checkout + pkgs.w3m # needed for the manual anyway + pkgs.ddrescue + pkgs.ccrypt + pkgs.cryptsetup # needed for dm-crypt volumes + + # Some networking tools. + pkgs.sshfsFuse + pkgs.socat + pkgs.screen + pkgs.wpa_supplicant # !!! should use the wpa module + + # Hardware-related tools. + pkgs.sdparm + pkgs.hdparm + pkgs.dmraid + + # Tools to create / manipulate filesystems. + pkgs.btrfsProgs + + # Some compression/archiver tools. + pkgs.unrar + pkgs.unzip + pkgs.zip + pkgs.xz + pkgs.dar # disk archiver + + # Some editors. + pkgs.nvi + pkgs.bvi # binary editor + pkgs.joe + ]; + + boot.loader.grub.enable = false; + boot.loader.generationsDir.enable = false; + system.boot.loader.kernelFile = "/uImage"; + + boot.initrd.availableKernelModules = + [ "mvsdio" "mmc_block" "reiserfs" "ext3" "ums-cypress" "rtc_mv" + "ext4" ]; + + boot.initrd.kernelModules = + [ + "scsi_wait_scan" + ]; + + boot.postBootCommands = + '' + mkdir -p /mnt + + cp ${dummyConfiguration} /etc/nixos/configuration.nix + ''; + + boot.initrd.extraUtilsCommands = + '' + cp ${pkgs.utillinux}/sbin/hwclock $out/bin + ''; + + boot.initrd.postDeviceCommands = + '' + hwclock -s + ''; + + boot.kernelParams = + [ + "selinux=0" + "console=tty1" + ]; + + boot.kernelPackages = pkgs.linuxPackages_2_6_35; + + services.mingetty = { + ttys = [ "ttyS0" ]; + + # Some more help text. + helpLine = '' + Log in as "root" with an empty password. ${ + if config.services.xserver.enable then + "Type `start xserver' to start\nthe graphical user interface." + else "" + } + ''; + }; + + # Setting vesa, we don't get the nvidia driver, which can't work in arm. + services.xserver.videoDriver = "vesa"; + services.xserver.videoDrivers = []; + services.nixosManual.enable = false; + + # Include the firmware for various wireless cards. + networking.enableRT73Firmware = true; + networking.enableIntel2200BGFirmware = true; + + # To speed up further installation of packages, include the complete stdenv + # in the Nix store of the tarball. + tarball.storeContents = pkgs2storeContents [ pkgs.stdenv ]; + tarball.contents = [ + { source = kernelParams; + target = "/kernelparams.txt"; + } + { source = config.boot.kernelPackages.kernel + config.system.boot.loader.kernelFile; + target = "/boot/uImage"; + } + { source = pkgs.ubootSheevaplug; + target = "/boot/uboot"; + } + ]; + + # Allow sshd to be started manually through "start sshd". It should + # not be started by default on the installation CD because the + # default root password is empty. + services.openssh.enable = true; + services.ttyBackgrounds.enable = false; + jobs.openssh.startOn = pkgs.lib.mkOverride 50 {} ""; + + nixpkgs.config = { + packageOverrides = pkgs : rec { + }; + platform = (import /etc/nixos/nixpkgs/pkgs/top-level/platforms.nix).sheevaplug; + }; +}