892d12bccf
* system.nssModules * system.modulesTree * system.sbin.modprobe * system.sbin.mount * nix.envVars - Remove Arguments that can be accessed either by "config" or "pkgs". - Use the new scheme for upstart-jobs/default.nix. This is now a configuration file which is imported by system/options.nix. - Jobs can now include upstart-job/default.nix: * upstrat-jobs/cron.nix * upstart-jobs/dhclient.nix => No Nixos file refers to upstart-jobs/default.nix except if one of its options is require to define an extra job. (e.g.: cron, dhclient) svn path=/nixos/branches/fix-style/; revision=13327
103 lines
2.5 KiB
XML
103 lines
2.5 KiB
XML
<chapter xmlns="http://docbook.org/ns/docbook"
|
||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
|
||
<title>Development</title>
|
||
|
||
<para>This chapter has some random notes on hacking on
|
||
NixOS.</para>
|
||
|
||
|
||
<section>
|
||
|
||
<title>Building specific parts of NixOS</title>
|
||
|
||
<para>
|
||
|
||
<screen>
|
||
$ nix-build /etc/nixos/nixos <replaceable>attr</replaceable></screen>
|
||
|
||
where <replaceable>attr</replaceable> is an attribute in
|
||
<filename>/etc/nixos/nixos/default.nix</filename>. Attributes of interest include:
|
||
|
||
<variablelist>
|
||
|
||
<varlistentry>
|
||
<term><varname>kernel</varname></term>
|
||
<listitem><para>The kernel.</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><varname>initialRamdisk</varname></term>
|
||
<listitem><para>The initial ramdisk (initrd) for this configuration.</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><varname>bootStage1</varname></term>
|
||
<listitem><para>The stage 1 (initrd) init script.</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><varname>bootStage2</varname></term>
|
||
<listitem><para>The stage 2 init script.</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><varname>etc</varname></term>
|
||
<listitem><para>The statically computed parts of <filename>/etc</filename>.</para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><varname>upstartJobs</varname></term>
|
||
<listitem><para>An attribute set containing the Upstart jobs. For
|
||
instance, the <varname>sshd</varname> Upstart job can be built by
|
||
doing <literal>nix-build /etc/nixos/nixos -A
|
||
tests.upstartJobs.sshd</literal>.</para></listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
<section>
|
||
|
||
<title>Testing the installer</title>
|
||
|
||
<para>Building, burning, and booting from an installation CD is rather
|
||
tedious, so here is a quick way to see if the installer works
|
||
properly:
|
||
|
||
<screen>
|
||
$ nix-build .../nixos/configuration/rescue-cd.nix -A system.nixosInstall
|
||
$ dd if=/dev/zero of=diskimage seek=2G count=0 bs=1
|
||
$ yes | mke2fs -j diskimage
|
||
$ mount -o loop diskimage /mnt
|
||
$ ./result/bin/nixos-install</screen>
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
<section>
|
||
|
||
<title>Testing the <literal>initrd</literal></title>
|
||
|
||
<para>A quick way to test whether the kernel and the initial ramdisk
|
||
boot correctly is to use QEMU’s <option>-kernel</option> and
|
||
<option>-initrd</option> options:
|
||
|
||
<screen>
|
||
$ nix-build /etc/nixos/nixos -A initialRamdisk -o initrd
|
||
$ nix-build /etc/nixos/nixos -A kernel -o kernel
|
||
$ qemu-system-x86_64 -kernel ./kernel/vmlinuz -initrd ./initrd/initrd -hda /dev/null
|
||
</screen>
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
</chapter>
|