summary refs log tree commit diff
path: root/nixos/modules/system/boot/loader/generic-extlinux-compatible
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/system/boot/loader/generic-extlinux-compatible')
-rw-r--r--nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix82
-rw-r--r--nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix8
-rw-r--r--nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh157
3 files changed, 0 insertions, 247 deletions
diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix b/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix
deleted file mode 100644
index 545b594674f..00000000000
--- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-  blCfg = config.boot.loader;
-  dtCfg = config.hardware.deviceTree;
-  cfg = blCfg.generic-extlinux-compatible;
-
-  timeoutStr = if blCfg.timeout == null then "-1" else toString blCfg.timeout;
-
-  # The builder used to write during system activation
-  builder = import ./extlinux-conf-builder.nix { inherit pkgs; };
-  # The builder exposed in populateCmd, which runs on the build architecture
-  populateBuilder = import ./extlinux-conf-builder.nix { pkgs = pkgs.buildPackages; };
-in
-{
-  options = {
-    boot.loader.generic-extlinux-compatible = {
-      enable = mkOption {
-        default = false;
-        type = types.bool;
-        description = ''
-          Whether to generate an extlinux-compatible configuration file
-          under <literal>/boot/extlinux.conf</literal>.  For instance,
-          U-Boot's generic distro boot support uses this file format.
-
-          See <link xlink:href="http://git.denx.de/?p=u-boot.git;a=blob;f=doc/README.distro;hb=refs/heads/master">U-boot's documentation</link>
-          for more information.
-        '';
-      };
-
-      useGenerationDeviceTree = mkOption {
-        default = true;
-        type = types.bool;
-        description = ''
-          Whether to generate Device Tree-related directives in the
-          extlinux configuration.
-
-          When enabled, the bootloader will attempt to load the device
-          tree binaries from the generation's kernel.
-
-          Note that this affects all generations, regardless of the
-          setting value used in their configurations.
-        '';
-      };
-
-      configurationLimit = mkOption {
-        default = 20;
-        example = 10;
-        type = types.int;
-        description = ''
-          Maximum number of configurations in the boot menu.
-        '';
-      };
-
-      populateCmd = mkOption {
-        type = types.str;
-        readOnly = true;
-        description = ''
-          Contains the builder command used to populate an image,
-          honoring all options except the <literal>-c &lt;path-to-default-configuration&gt;</literal>
-          argument.
-          Useful to have for sdImage.populateRootCommands
-        '';
-      };
-
-    };
-  };
-
-  config = let
-    builderArgs = "-g ${toString cfg.configurationLimit} -t ${timeoutStr}"
-      + lib.optionalString (dtCfg.name != null) " -n ${dtCfg.name}"
-      + lib.optionalString (!cfg.useGenerationDeviceTree) " -r";
-  in
-    mkIf cfg.enable {
-      system.build.installBootLoader = "${builder} ${builderArgs} -c";
-      system.boot.loader.id = "generic-extlinux-compatible";
-
-      boot.loader.generic-extlinux-compatible.populateCmd = "${populateBuilder} ${builderArgs}";
-    };
-}
diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix
deleted file mode 100644
index 576a07c1d27..00000000000
--- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ pkgs }:
-
-pkgs.substituteAll {
-  src = ./extlinux-conf-builder.sh;
-  isExecutable = true;
-  path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
-  inherit (pkgs) bash;
-}
diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh
deleted file mode 100644
index 1a0da005029..00000000000
--- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh
+++ /dev/null
@@ -1,157 +0,0 @@
-#! @bash@/bin/sh -e
-
-shopt -s nullglob
-
-export PATH=/empty
-for i in @path@; do PATH=$PATH:$i/bin; done
-
-usage() {
-    echo "usage: $0 -t <timeout> -c <path-to-default-configuration> [-d <boot-dir>] [-g <num-generations>] [-n <dtbName>] [-r]" >&2
-    exit 1
-}
-
-timeout=                # Timeout in centiseconds
-default=                # Default configuration
-target=/boot            # Target directory
-numGenerations=0        # Number of other generations to include in the menu
-
-while getopts "t:c:d:g:n:r" opt; do
-    case "$opt" in
-        t) # U-Boot interprets '0' as infinite and negative as instant boot
-            if [ "$OPTARG" -lt 0 ]; then
-                timeout=0
-            elif [ "$OPTARG" = 0 ]; then
-                timeout=-10
-            else
-                timeout=$((OPTARG * 10))
-            fi
-            ;;
-        c) default="$OPTARG" ;;
-        d) target="$OPTARG" ;;
-        g) numGenerations="$OPTARG" ;;
-        n) dtbName="$OPTARG" ;;
-        r) noDeviceTree=1 ;;
-        \?) usage ;;
-    esac
-done
-
-[ "$timeout" = "" -o "$default" = "" ] && usage
-
-mkdir -p $target/nixos
-mkdir -p $target/extlinux
-
-# Convert a path to a file in the Nix store such as
-# /nix/store/<hash>-<name>/file to <hash>-<name>-<file>.
-cleanName() {
-    local path="$1"
-    echo "$path" | sed 's|^/nix/store/||' | sed 's|/|-|g'
-}
-
-# Copy a file from the Nix store to $target/nixos.
-declare -A filesCopied
-
-copyToKernelsDir() {
-    local src=$(readlink -f "$1")
-    local dst="$target/nixos/$(cleanName $src)"
-    # Don't copy the file if $dst already exists.  This means that we
-    # have to create $dst atomically to prevent partially copied
-    # kernels or initrd if this script is ever interrupted.
-    if ! test -e $dst; then
-        local dstTmp=$dst.tmp.$$
-        cp -r $src $dstTmp
-        mv $dstTmp $dst
-    fi
-    filesCopied[$dst]=1
-    result=$dst
-}
-
-# Copy its kernel, initrd and dtbs to $target/nixos, and echo out an
-# extlinux menu entry
-addEntry() {
-    local path=$(readlink -f "$1")
-    local tag="$2" # Generation number or 'default'
-
-    if ! test -e $path/kernel -a -e $path/initrd; then
-        return
-    fi
-
-    copyToKernelsDir "$path/kernel"; kernel=$result
-    copyToKernelsDir "$path/initrd"; initrd=$result
-    dtbDir=$(readlink -m "$path/dtbs")
-    if [ -e "$dtbDir" ]; then
-        copyToKernelsDir "$dtbDir"; dtbs=$result
-    fi
-
-    timestampEpoch=$(stat -L -c '%Z' $path)
-
-    timestamp=$(date "+%Y-%m-%d %H:%M" -d @$timestampEpoch)
-    nixosLabel="$(cat $path/nixos-version)"
-    extraParams="$(cat $path/kernel-params)"
-
-    echo
-    echo "LABEL nixos-$tag"
-    if [ "$tag" = "default" ]; then
-        echo "  MENU LABEL NixOS - Default"
-    else
-        echo "  MENU LABEL NixOS - Configuration $tag ($timestamp - $nixosLabel)"
-    fi
-    echo "  LINUX ../nixos/$(basename $kernel)"
-    echo "  INITRD ../nixos/$(basename $initrd)"
-    echo "  APPEND init=$path/init $extraParams"
-
-    if [ -n "$noDeviceTree" ]; then
-        return
-    fi
-
-    if [ -d "$dtbDir" ]; then
-        # if a dtbName was specified explicitly, use that, else use FDTDIR
-        if [ -n "$dtbName" ]; then
-            echo "  FDT ../nixos/$(basename $dtbs)/${dtbName}"
-        else
-            echo "  FDTDIR ../nixos/$(basename $dtbs)"
-        fi
-    else
-        if [ -n "$dtbName" ]; then
-            echo "Explicitly requested dtbName $dtbName, but there's no FDTDIR - bailing out." >&2
-            exit 1
-        fi
-    fi
-}
-
-tmpFile="$target/extlinux/extlinux.conf.tmp.$$"
-
-cat > $tmpFile <<EOF
-# Generated file, all changes will be lost on nixos-rebuild!
-
-# Change this to e.g. nixos-42 to temporarily boot to an older configuration.
-DEFAULT nixos-default
-
-MENU TITLE ------------------------------------------------------------
-TIMEOUT $timeout
-EOF
-
-addEntry $default default >> $tmpFile
-
-if [ "$numGenerations" -gt 0 ]; then
-    # Add up to $numGenerations generations of the system profile to the menu,
-    # in reverse (most recent to least recent) order.
-    for generation in $(
-            (cd /nix/var/nix/profiles && ls -d system-*-link) \
-            | sed 's/system-\([0-9]\+\)-link/\1/' \
-            | sort -n -r \
-            | head -n $numGenerations); do
-        link=/nix/var/nix/profiles/system-$generation-link
-        addEntry $link $generation
-    done >> $tmpFile
-fi
-
-mv -f $tmpFile $target/extlinux/extlinux.conf
-
-# Remove obsolete files from $target/nixos.
-for fn in $target/nixos/*; do
-    if ! test "${filesCopied[$fn]}" = 1; then
-        echo "Removing no longer needed boot file: $fn"
-        chmod +w -- "$fn"
-        rm -rf -- "$fn"
-    fi
-done