blob: 461e4fff8b1e797d81bbebcbdc50e6c892a23713 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# SPDX-FileCopyrightText: 2022 Alyssa Ross <hi@alyssa.is>
# SPDX-License-Identifier: MIT
{ lib ? import <nixpkgs/lib>
, runScript ? "https://spectrum-os.org/git/infra/plain/run"
, chain ? "https://github.com/nix-community/nixos-images/releases/download/nixos-unstable/netboot-x86_64-linux.ipxe"
, configuration ? "https://spectrum-os.org/git/infra/plain/configuration.nix"
, userdata ? "http://169.254.169.254/latest/user-data"
}:
let
commands = [
"systemctl start network-online.target"
"/run/current-system/sw/bin/curl -fLsSo /tmp/run ${runScript}"
"/run/current-system/sw/bin/chmod +x /tmp/run"
"/tmp/run"
];
cmdline = lib.concatMapStrings (cmd: ''systemd.run="${cmd}" '') commands
+ toString [
"systemd.unit=kernel-command-line.target"
"systemd.run_success_action=none"
"systemd.run_failure_action=none"
"configuration=${configuration}"
"userdata=${userdata}"
];
defaultCmdlineLength = 122;
cmdlineMax = 2048;
in
assert builtins.stringLength cmdline + defaultCmdlineLength <= cmdlineMax;
''
#!ipxe
set cmdline ${cmdline}
dhcp
chain ${chain}
''
|