1# This module contains the basic configuration for building a NixOS
2# installation CD.
3{
4 config,
5 lib,
6 options,
7 pkgs,
8 ...
9}:
10{
11 imports = [
12 ./iso-image.nix
13
14 # Profiles of this basic installation CD.
15 ../../profiles/base.nix
16 ../../profiles/installation-device.nix
17 ];
18
19 hardware.enableAllHardware = true;
20
21 # Adds terminus_font for people with HiDPI displays
22 console.packages = options.console.packages.default ++ [ pkgs.terminus_font ];
23
24 # EFI booting
25 isoImage.makeEfiBootable = true;
26
27 # USB booting
28 isoImage.makeUsbBootable = true;
29
30 # Add Memtest86+ to the CD.
31 boot.loader.grub.memtest86.enable = true;
32
33 # An installation media cannot tolerate a host config defined file
34 # system layout on a fresh machine, before it has been formatted.
35 swapDevices = lib.mkImageMediaOverride [ ];
36 fileSystems = lib.mkImageMediaOverride config.lib.isoFileSystems;
37 boot.initrd.luks.devices = lib.mkImageMediaOverride { };
38
39 boot.postBootCommands = ''
40 for o in $(</proc/cmdline); do
41 case "$o" in
42 live.nixos.passwd=*)
43 set -- $(IFS==; echo $o)
44 echo "nixos:$2" | ${pkgs.shadow}/bin/chpasswd
45 ;;
46 esac
47 done
48 '';
49
50 environment.defaultPackages = with pkgs; [
51 rsync
52 ];
53
54 programs.git.enable = lib.mkDefault true;
55
56 system.stateVersion = lib.mkDefault lib.trivial.release;
57}