<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.nixos.org/w/index.php?action=history&amp;feed=atom&amp;title=IPXE</id>
	<title>IPXE - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nixos.org/w/index.php?action=history&amp;feed=atom&amp;title=IPXE"/>
	<link rel="alternate" type="text/html" href="https://wiki.nixos.org/w/index.php?title=IPXE&amp;action=history"/>
	<updated>2026-04-04T10:12:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.0</generator>
	<entry>
		<id>https://wiki.nixos.org/w/index.php?title=IPXE&amp;diff=21329&amp;oldid=prev</id>
		<title>Klinger: Category:Booting and link</title>
		<link rel="alternate" type="text/html" href="https://wiki.nixos.org/w/index.php?title=IPXE&amp;diff=21329&amp;oldid=prev"/>
		<updated>2025-05-01T13:33:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/Category:Booting&quot; title=&quot;Category:Booting&quot;&gt;Category:Booting&lt;/a&gt; and link&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:33, 1 May 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;iPXE is an open-source network boot firmware.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://ipxe.org/ &lt;/ins&gt;iPXE&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/ins&gt;is an open-source network boot firmware.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Customize Nix Package ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Customize Nix Package ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;Given the flake above, you can build your additional target by running &amp;lt;code&amp;gt;nix build nixpkgs#ipxe&amp;lt;/code&amp;gt;. Then the custom artifact should be available behind the &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; symlink, in this example as &amp;lt;code&amp;gt;result/ipxe-usbnet.efi&amp;lt;/code&amp;gt;. This does also compile the default outputs, but this should not be a big problem as they share nearly all of their code and so the compiler can reuse most of its work for all targets.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;Given the flake above, you can build your additional target by running &amp;lt;code&amp;gt;nix build nixpkgs#ipxe&amp;lt;/code&amp;gt;. Then the custom artifact should be available behind the &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; symlink, in this example as &amp;lt;code&amp;gt;result/ipxe-usbnet.efi&amp;lt;/code&amp;gt;. This does also compile the default outputs, but this should not be a big problem as they share nearly all of their code and so the compiler can reuse most of its work for all targets.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Booting]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-21192:rev-21329:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Klinger</name></author>
	</entry>
	<entry>
		<id>https://wiki.nixos.org/w/index.php?title=IPXE&amp;diff=21192&amp;oldid=prev</id>
		<title>Zocker1999: added page about iPXE &amp; how to customize the package easily</title>
		<link rel="alternate" type="text/html" href="https://wiki.nixos.org/w/index.php?title=IPXE&amp;diff=21192&amp;oldid=prev"/>
		<updated>2025-04-12T23:02:41Z</updated>

		<summary type="html">&lt;p&gt;added page about iPXE &amp;amp; how to customize the package easily&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;iPXE is an open-source network boot firmware.&lt;br /&gt;
&lt;br /&gt;
== Customize Nix Package ==&lt;br /&gt;
While common iPXE configurations are already built &amp;amp; cached centrally, building custom iPXE images can be useful to make it easier to use in different environments, e.g. equipped with otherwise unsupported hardware. All [https://ipxe.org/buildcfg build configuration options], [https://ipxe.org/appnote/hardware_drivers hardware drivers] &amp;amp; [https://ipxe.org/appnote/buildtargets pre-configured targets] are listed in the official iPXE documentation. This section should help you to “translate“ the instructions from the iPXE documentation to a working nix equivalent.&lt;br /&gt;
&lt;br /&gt;
The iPXE [https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/ip/ipxe/package.nix package.nix] in [[Nixpkgs]] allows you to change the build configuration and/or to build targets with a specific set of drivers. For that the package defines attributes which can be easily overriden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;additionalOptions&amp;lt;/code&amp;gt; allows you to define [https://ipxe.org/buildcfg build configuration options]. Where iPXE requires you to add a &amp;lt;code&amp;gt;#define OPTION_NAME&amp;lt;/code&amp;gt; to a C header file, you can do the same by adding &amp;lt;code&amp;gt;&amp;quot;OPTION_NAME&amp;quot;&amp;lt;/code&amp;gt; to the option list. Be aware that the iPXE option does not list all available options by design, you can find others by examining the C header files in &amp;lt;code&amp;gt;src/config&amp;lt;/code&amp;gt; in their [https://github.com/ipxe/ipxe.git GitHub repository].&lt;br /&gt;
&amp;lt;code&amp;gt;additionalTargets&amp;lt;/code&amp;gt; allows you to build iPXE artifacts for use in different environments. It is an attribute set, mapping from a target name to the resulting name of the output file. For iPXE, the target name defines which drivers (or set of drivers from a pre-configured target) should be compiled into your additional artifact. The general syntax of the target name is &amp;lt;code&amp;gt;[platform]/[driver].[extension]&amp;lt;/code&amp;gt;, where multiple drivers are separated with &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt;.&amp;lt;ref&amp;gt;https://ipxe.org/appnote/buildtargets&amp;lt;/ref&amp;gt; The syntax is further explained [https://ipxe.org/appnote/buildtargets here], where also a list of pre-configured targets (i.e. set of drivers) designed for common use cases is presented. A list of additional drivers is available [https://ipxe.org/appnote/hardware_drivers there].&lt;br /&gt;
&lt;br /&gt;
=== Example as Standalone Flake ===&lt;br /&gt;
Following is a [[Flakes|flake]] as a full standalone example. Its intended use is to be able to quickly compile a custom iPXE artifact for use on outside systems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nix&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  description = &amp;quot;custom iPXE build for USB network cards&amp;quot;;&lt;br /&gt;
  inputs.nixpkgs.url = &amp;quot;github:NixOS/nixpkgs/unstable&amp;quot;;&lt;br /&gt;
  outputs =&lt;br /&gt;
    { nixpkgs, ... }:&lt;br /&gt;
    {&lt;br /&gt;
      packages.x86_64-linux.ipxe = nixpkgs.legacyPackages.x86_64-linux.ipxe.override {&lt;br /&gt;
        additionalOptions = [&lt;br /&gt;
          &amp;quot;USB_HCD_USBIO&amp;quot;&lt;br /&gt;
        ];&lt;br /&gt;
        additionalTargets = {&lt;br /&gt;
          # build for platform: x86_64-efi&lt;br /&gt;
          # with driver (sets): ipxe, ecm, ncm&lt;br /&gt;
          # build a (normal) efi binary&lt;br /&gt;
          &amp;quot;bin-x86_64-efi/ipxe--ecm--ncm.efi&amp;quot; = &amp;quot;ipxe-usbnet.efi&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
      };&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Given the flake above, you can build your additional target by running &amp;lt;code&amp;gt;nix build nixpkgs#ipxe&amp;lt;/code&amp;gt;. Then the custom artifact should be available behind the &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; symlink, in this example as &amp;lt;code&amp;gt;result/ipxe-usbnet.efi&amp;lt;/code&amp;gt;. This does also compile the default outputs, but this should not be a big problem as they share nearly all of their code and so the compiler can reuse most of its work for all targets.&lt;/div&gt;</summary>
		<author><name>Zocker1999</name></author>
	</entry>
</feed>