diff --git a/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix b/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix deleted file mode 100644 index 054c8c74a76b..000000000000 --- a/nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix +++ /dev/null @@ -1,160 +0,0 @@ -{ config, lib, pkgs, ... }: - -with 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, ... }: - - { # Add your own options below, e.g.: - # services.openssh.enable = true; - nixpkgs.config.platform = pkgs.platforms.fuloong2f_n32; - } - ''; - - - pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; - - # A clue for the kernel loading - kernelParams = pkgs.writeText "kernel-params.txt" '' - Kernel Parameters: - init=/boot/init ${toString config.boot.kernelParams} - ''; - - # System wide nixpkgs config - nixpkgsUserConfig = pkgs.writeText "config.nix" '' - pkgs: - { - platform = pkgs.platforms.fuloong2f_n32; - } - ''; - -in - -{ - imports = [ ./system-tarball.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.w3m # needed for the manual anyway - pkgs.testdisk # useful for repairing boot problems - pkgs.ms-sys # for writing Microsoft boot sectors / MBRs - pkgs.parted - pkgs.ddrescue - pkgs.ccrypt - pkgs.cryptsetup # needed for dm-crypt volumes - - # Some networking tools. - pkgs.sshfs-fuse - 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.ntfsprogs # for resizing NTFS partitions - pkgs.btrfs-progs - pkgs.jfsutils - - # Some compression/archiver tools. - pkgs.unzip - pkgs.zip - pkgs.xz - pkgs.dar # disk archiver - - # Some editors. - pkgs.nvi - pkgs.bvi # binary editor - pkgs.joe - ]; - - # The initrd has to contain any module that might be necessary for - # mounting the CD/DVD. - boot.initrd.availableKernelModules = - [ "vfat" "reiserfs" ]; - - boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_10; - boot.kernelParams = [ "console=tty1" ]; - - boot.postBootCommands = - '' - mkdir -p /mnt - - cp ${dummyConfiguration} /etc/nixos/configuration.nix - ''; - - # Some more help text. - services.getty.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 "" - } - ''; - - # Include the firmware for various wireless cards. - networking.enableRalinkFirmware = 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 ] - ++ [ - { - object = config.system.build.bootStage2; - symlink = "/boot/init"; - } - { - object = config.system.build.toplevel; - symlink = "/boot/system"; - } - ]; - - tarball.contents = [ - { source = kernelParams; - target = "/kernelparams.txt"; - } - { source = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile; - target = "/boot/" + config.system.boot.loader.kernelFile; - } - { source = nixpkgsUserConfig; - target = "/root/.nixpkgs/config.nix"; - } - ]; - - # 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; - systemd.services.openssh.wantedBy = lib.mkOverride 50 []; - - boot.loader.grub.enable = false; - boot.loader.generationsDir.enable = false; - system.boot.loader.kernelFile = "vmlinux"; - - nixpkgs.config = { - platform = pkgs.platforms.fuloong2f_n32; - }; -} diff --git a/nixos/modules/installer/cd-dvd/system-tarball-pc-readme.txt b/nixos/modules/installer/cd-dvd/system-tarball-pc-readme.txt deleted file mode 100644 index 887bf60d0fbe..000000000000 --- a/nixos/modules/installer/cd-dvd/system-tarball-pc-readme.txt +++ /dev/null @@ -1,89 +0,0 @@ -Let all the files in the system tarball sit in a directory served by NFS (the -NFS root) like this in exportfs: - /home/pcroot 192.168.1.0/24(rw,no_root_squash,no_all_squash) - -Run "exportfs -a" after editing /etc/exportfs, for the nfs server to be aware -of the changes. - -Use a tftp server serving the root of boot/ (from the system tarball). - -In order to have PXE boot, use the boot/dhcpd.conf-example file for your dhcpd -server, as it will point your PXE clients to pxelinux.0 from the tftp server. -Adapt the configuration to your network. - -Adapt the pxelinux configuration (boot/pxelinux.cfg/default) to set the path to -your nfrroot. If you use ip=dhcp in the kernel, the nfs server ip will be taken -from dhcp and so you don't have to specify it. - -The linux in bzImage includes network drivers for some usual cards. - - -QEMU Testing ---------------- - -You can test qemu pxe boot without having a DHCP server adapted, but having -nfsroot, like this: - qemu-system-x86_64 -tftp /home/pcroot/boot -net nic -net user,bootfile=pxelinux.0 -boot n - -I don't know how to use NFS through the qemu '-net user' though. - - -QEMU Testing with NFS root and bridged network -------------------------------------------------- - -This allows testing with qemu as any other host in your LAN. - -Testing with the real dhcpd server requires setting up a bridge and having a -tap device. - tunctl -t tap0 - brctl addbr br0 - brctl addif br0 eth0 - brctl addif tap0 eth0 - ifconfig eth0 0.0.0.0 up - ifconfig tap0 0.0.0.0 up - ifconfig br0 up # With your ip configuration - -Then you can run qemu: - qemu-system-x86_64 -boot n -net tap,ifname=tap0,script=no -net nic,model=e1000 - - -Using the system-tarball-pc in a chroot --------------------------------------------------- - -Installation: - mkdir nixos-chroot && cd nixos-chroot - tar xf your-system-tarball.tar.xz - mkdir sys dev proc tmp root var run - mount --bind /sys sys - mount --bind /dev dev - mount --bind /proc proc - -Activate the system: look for a directory in nix/store similar to: - "/nix/store/y0d1lcj9fppli0hl3x0m0ba5g1ndjv2j-nixos-feb97bx-53f008" -Having found it, activate that nixos system *twice*: - chroot . /nix/store/SOMETHING-nixos-SOMETHING/activate - chroot . /nix/store/SOMETHING-nixos-SOMETHING/activate - -This runs a 'hostname' command. Restore your old hostname with: - hostname OLDHOSTNAME - -Copy your system resolv.conf to the /etc/resolv.conf inside the chroot: - cp /etc/resolv.conf etc - -Then you can get an interactive shell in the nixos chroot. '*' means -to run inside the chroot interactive shell - chroot . /bin/sh -* source /etc/profile - -Populate the nix database: that should be done in the init script if you -had booted this nixos. Run: -* `grep local-cmds run/current-system/init` - -Then you can proceed normally subscribing to a nixos channel: - nix-channel --add https://nixos.org/channels/nixos-unstable - nix-channel --update - -Testing: - nix-env -i hello - which hello - hello diff --git a/nixos/modules/installer/cd-dvd/system-tarball-pc.nix b/nixos/modules/installer/cd-dvd/system-tarball-pc.nix deleted file mode 100644 index 674fb6c8a33c..000000000000 --- a/nixos/modules/installer/cd-dvd/system-tarball-pc.nix +++ /dev/null @@ -1,163 +0,0 @@ -# This module contains the basic configuration for building a NixOS -# tarball, that can directly boot, maybe using PXE or unpacking on a fs. - -{ config, lib, pkgs, ... }: - -with lib; - -let - - pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; - - # For PXE kernel loading - pxeconfig = pkgs.writeText "pxeconfig-default" '' - default menu.c32 - prompt 0 - - label bootlocal - menu default - localboot 0 - timeout 80 - TOTALTIMEOUT 9000 - - label nixos - MENU LABEL ^NixOS using nfsroot - KERNEL bzImage - append ip=dhcp nfsroot=/home/pcroot init=${config.system.build.toplevel}/init rw - - # I don't know how to make this boot with nfsroot (using the initrd) - label nixos_initrd - MENU LABEL NixOS booting the poor ^initrd. - KERNEL bzImage - append initrd=initrd ip=dhcp nfsroot=/home/pcroot init=${config.system.build.toplevel}/init rw - - label memtest - MENU LABEL ^${pkgs.memtest86.name} - KERNEL memtest - ''; - - dhcpdExampleConfig = pkgs.writeText "dhcpd.conf-example" '' - # Example configuration for booting PXE. - allow booting; - allow bootp; - - # Adapt this to your network configuration. - option domain-name "local"; - option subnet-mask 255.255.255.0; - option broadcast-address 192.168.1.255; - option domain-name-servers 192.168.1.1; - option routers 192.168.1.1; - - # PXE-specific configuration directives... - # Some BIOS don't accept slashes for paths inside the tftp servers, - # and will report Access Violation if they see slashes. - filename "pxelinux.0"; - # For the TFTP and NFS root server. Set the IP of your server. - next-server 192.168.1.34; - - subnet 192.168.1.0 netmask 255.255.255.0 { - range 192.168.1.50 192.168.1.55; - } - ''; - - readme = ./system-tarball-pc-readme.txt; - -in - -{ - imports = - [ ./system-tarball.nix - - # Profiles of this basic installation. - ../../profiles/all-hardware.nix - ../../profiles/base.nix - ../../profiles/installation-device.nix - ]; - - # 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 = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile; - target = "/boot/" + config.system.boot.loader.kernelFile; - } - { source = "${pkgs.syslinux}/share/syslinux/pxelinux.0"; - target = "/boot/pxelinux.0"; - } - { source = "${pkgs.syslinux}/share/syslinux/menu.c32"; - target = "/boot/menu.c32"; - } - { source = pxeconfig; - target = "/boot/pxelinux.cfg/default"; - } - { source = readme; - target = "/readme.txt"; - } - { source = dhcpdExampleConfig; - target = "/boot/dhcpd.conf-example"; - } - { source = "${pkgs.memtest86}/memtest.bin"; - # We can't leave '.bin', because pxelinux interprets this specially, - # and it would not load the image fine. - # http://forum.canardpc.com/threads/46464-0104-when-launched-via-pxe - target = "/boot/memtest"; - } - ]; - - # 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; - systemd.services.openssh.wantedBy = lib.mkOverride 50 []; - - # To be able to use the systemTarball to catch troubles. - boot.crashDump = { - enable = true; - kernelPackages = pkgs.linuxKernel.packages.linux_3_4; - }; - - # No grub for the tarball. - boot.loader.grub.enable = false; - - /* fake entry, just to have a happy stage-1. Users - may boot without having stage-1 though */ - fileSystems.fake = - { mountPoint = "/"; - device = "/dev/something"; - }; - - nixpkgs.config = { - packageOverrides = p: { - linux_3_4 = p.linux_3_4.override { - extraConfig = '' - # Enable drivers in kernel for most NICs. - E1000 y - # E1000E y - # ATH5K y - 8139TOO y - NE2K_PCI y - ATL1 y - ATL1E y - ATL1C y - VORTEX y - VIA_RHINE y - R8169 y - - # Enable nfs root boot - UNIX y # http://www.linux-mips.org/archives/linux-mips/2006-11/msg00113.html - IP_PNP y - IP_PNP_DHCP y - FSCACHE y - NFS_FS y - NFS_FSCACHE y - ROOT_NFS y - - # Enable devtmpfs - DEVTMPFS y - DEVTMPFS_MOUNT y - ''; - }; - }; - }; -} diff --git a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix deleted file mode 100644 index 329bd329dc15..000000000000 --- a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix +++ /dev/null @@ -1,172 +0,0 @@ -# This module contains the basic configuration for building a NixOS -# tarball for the sheevaplug. - -{ config, lib, pkgs, ... }: - -with 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, ... }: - - { - # Add your own options below and run "nixos-rebuild switch". - # E.g., - # services.openssh.enable = true; - } - ''; - - - pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; - - # A clue for the kernel loading - kernelParams = pkgs.writeText "kernel-params.txt" '' - Kernel Parameters: - init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} - ''; - - -in - -{ - imports = [ ./system-tarball.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.w3m # needed for the manual anyway - pkgs.ddrescue - pkgs.ccrypt - pkgs.cryptsetup # needed for dm-crypt volumes - - # Some networking tools. - pkgs.sshfs-fuse - 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.btrfs-progs - - # Some compression/archiver tools. - 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" "reiserfs" "ext3" "ums-cypress" "rtc_mv" "ext4" ]; - - boot.postBootCommands = lib.mkIf (!boot.initrd.systemd.enable) - '' - mkdir -p /mnt - - cp ${dummyConfiguration} /etc/nixos/configuration.nix - ''; - - boot.initrd.extraUtilsCommands = lib.mkIf (!boot.initrd.systemd.enable) - '' - copy_bin_and_libs ${pkgs.util-linux}/sbin/hwclock - ''; - - boot.initrd.postDeviceCommands = lib.mkIf (!boot.initrd.systemd.enable) - '' - hwclock -s - ''; - - boot.kernelParams = - [ - "selinux=0" - "console=tty1" - # "console=ttyS0,115200n8" # serial console - ]; - - boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_4; - - boot.supportedFilesystems = [ "reiserfs" ]; - - /* fake entry, just to have a happy stage-1. Users - may boot without having stage-1 though */ - fileSystems.fake = - { mountPoint = "/"; - device = "/dev/something"; - }; - - services.getty = { - # 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.videoDrivers = [ "vesa" ]; - - documentation.nixos.enable = false; - - # Include the firmware for various wireless cards. - networking.enableRalinkFirmware = 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/" + config.system.boot.loader.kernelFile; - } - { 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; - systemd.services.openssh.wantedBy = lib.mkOverride 50 []; - - # cpufrequtils fails to build on non-pc - powerManagement.enable = false; - - nixpkgs.config = { - platform = pkgs.platforms.sheevaplug; - }; -} diff --git a/nixos/modules/installer/cd-dvd/system-tarball.nix b/nixos/modules/installer/cd-dvd/system-tarball.nix deleted file mode 100644 index 362c555cc53e..000000000000 --- a/nixos/modules/installer/cd-dvd/system-tarball.nix +++ /dev/null @@ -1,93 +0,0 @@ -# This module creates a bootable ISO image containing the given NixOS -# configuration. The derivation for the ISO image will be placed in -# config.system.build.tarball. - -{ config, lib, pkgs, ... }: - -with lib; - -let - - versionFile = pkgs.writeText "nixos-label" config.system.nixos.label; - -in - -{ - options = { - tarball.contents = mkOption { - example = literalExpression '' - [ { source = pkgs.memtest86 + "/memtest.bin"; - target = "boot/memtest.bin"; - } - ] - ''; - description = '' - This option lists files to be copied to fixed locations in the - generated ISO image. - ''; - }; - - tarball.storeContents = mkOption { - example = literalExpression "[ pkgs.stdenv ]"; - description = '' - This option lists additional derivations to be included in the - Nix store in the generated ISO image. - ''; - }; - - }; - - config = { - - # In stage 1 of the boot, mount the CD/DVD as the root FS by label - # so that we don't need to know its device. - fileSystems = { }; - - # boot.initrd.availableKernelModules = [ "mvsdio" "reiserfs" "ext3" "ext4" ]; - - # boot.initrd.kernelModules = [ "rtc_mv" ]; - - # Closures to be copied to the Nix store on the CD, namely the init - # script and the top-level system configuration directory. - tarball.storeContents = - [ { object = config.system.build.toplevel; - symlink = "/run/current-system"; - } - ]; - - # Individual files to be included on the CD, outside of the Nix - # store on the CD. - tarball.contents = - [ { source = config.system.build.initialRamdisk + "/" + config.system.boot.loader.initrdFile; - target = "/boot/" + config.system.boot.loader.initrdFile; - } - { source = versionFile; - target = "/nixos-version.txt"; - } - ]; - - # Create the tarball - system.build.tarball = import ../../../lib/make-system-tarball.nix { - inherit (pkgs) stdenv closureInfo pixz; - - inherit (config.tarball) contents storeContents; - }; - - boot.postBootCommands = - '' - # After booting, register the contents of the Nix store on the - # CD in the Nix database in the tmpfs. - if [ -f /nix-path-registration ]; then - ${config.nix.package.out}/bin/nix-store --load-db < /nix-path-registration && - rm /nix-path-registration - fi - - # nixos-rebuild also requires a "system" profile and an - # /etc/NIXOS tag. - touch /etc/NIXOS - ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system - ''; - - }; - -} diff --git a/nixos/release.nix b/nixos/release.nix index 543ab5b7d8a5..f533aebf34c1 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -318,39 +318,12 @@ in rec { "mkdir $out; ln -s $toplevel $out/dummy"); - # Provide a tarball that can be unpacked into an SD card, and easily - # boot that system from uboot (like for the sheevaplug). - # The pc variant helps preparing the expression for the system tarball - # in a machine faster than the sheevpalug - /* - system_tarball_pc = forAllSystems (system: makeSystemTarball { - module = ./modules/installer/cd-dvd/system-tarball-pc.nix; - inherit system; - }); - */ - # Provide container tarball for lxc, libvirt-lxc, docker-lxc, ... containerTarball = forAllSystems (system: makeSystemTarball { module = ./modules/virtualisation/lxc-container.nix; inherit system; }); - /* - system_tarball_fuloong2f = - assert builtins.currentSystem == "mips64-linux"; - makeSystemTarball { - module = ./modules/installer/cd-dvd/system-tarball-fuloong2f.nix; - system = "mips64-linux"; - }; - - system_tarball_sheevaplug = - assert builtins.currentSystem == "armv5tel-linux"; - makeSystemTarball { - module = ./modules/installer/cd-dvd/system-tarball-sheevaplug.nix; - system = "armv5tel-linux"; - }; - */ - tests = allTests; /* Build a bunch of typical closures so that Hydra can keep track of