aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/tools/bootloaders
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/tools/bootloaders
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/tools/bootloaders')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/0001-toolchain.patch27
-rw-r--r--infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/default.nix129
2 files changed, 156 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/0001-toolchain.patch b/infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/0001-toolchain.patch
new file mode 100644
index 000000000000..13c4c88f95f0
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/0001-toolchain.patch
@@ -0,0 +1,27 @@
+diff --git a/Make.common b/Make.common
+index 3f0b919..ee365f5 100644
+--- a/Make.common
++++ b/Make.common
+@@ -33,22 +33,6 @@ ARCH ?= $(HOSTARCH)
+
+ # Note: TIANOBASE is defined in master Makefile and exported
+ GENFW = $(TIANOBASE)/BaseTools/Source/C/bin/GenFw
+-prefix = /usr/bin/
+-ifeq ($(ARCH),aarch64)
+- CC = $(prefix)aarch64-linux-gnu-gcc
+- AS = $(prefix)aarch64-linux-gnu-as
+- LD = $(prefix)aarch64-linux-gnu-ld
+- AR = $(prefix)aarch64-linux-gnu-ar
+- RANLIB = $(prefix)aarch64-linux-gnu-ranlib
+- OBJCOPY = $(prefix)aarch64-linux-gnu-objcopy
+-else
+- CC = $(prefix)gcc
+- AS = $(prefix)as
+- LD = $(prefix)ld
+- AR = $(prefix)ar
+- RANLIB = $(prefix)ranlib
+- OBJCOPY = $(prefix)objcopy
+-endif
+
+ ifeq ($(MAKEWITH),TIANO)
+ # Below file defines TARGET (RELEASE or DEBUG) and TOOL_CHAIN_TAG (GCC44, GCC45, GCC46, or GCC47)
diff --git a/infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/default.nix b/infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/default.nix
new file mode 100644
index 000000000000..5c7c68d9d9e3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/default.nix
@@ -0,0 +1,129 @@
+{ stdenv, fetchurl, gnu-efi }:
+
+let
+ archids = {
+ x86_64-linux = { hostarch = "x86_64"; efiPlatform = "x64"; };
+ i686-linux = rec { hostarch = "ia32"; efiPlatform = hostarch; };
+ aarch64-linux = { hostarch = "aarch64"; efiPlatform = "aa64"; };
+ };
+
+ inherit
+ (archids.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}"))
+ hostarch efiPlatform;
+in
+
+stdenv.mkDerivation rec {
+ pname = "refind";
+ version = "0.12.0";
+ srcName = "refind-src-${version}";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/project/refind/${version}/${srcName}.tar.gz";
+ sha256 = "1i5p3sir3mx4i2q5w78360xn2kbgsj8rmgrqvsvag1zzr5dm1f3v";
+ };
+
+ patches = [
+ ./0001-toolchain.patch
+ ];
+
+ buildInputs = [ gnu-efi ];
+
+ hardeningDisable = [ "stackprotector" ];
+
+ makeFlags =
+ [ "prefix="
+ "EFIINC=${gnu-efi}/include/efi"
+ "EFILIB=${gnu-efi}/lib"
+ "GNUEFILIB=${gnu-efi}/lib"
+ "EFICRT0=${gnu-efi}/lib"
+ "HOSTARCH=${hostarch}"
+ "ARCH=${hostarch}"
+ ];
+
+ buildFlags = [ "gnuefi" "fs_gnuefi" ];
+
+ installPhase = ''
+ install -d $out/bin/
+ install -d $out/share/refind/drivers_${efiPlatform}/
+ install -d $out/share/refind/tools_${efiPlatform}/
+ install -d $out/share/refind/docs/html/
+ install -d $out/share/refind/docs/Styles/
+ install -d $out/share/refind/fonts/
+ install -d $out/share/refind/icons/
+ install -d $out/share/refind/images/
+ install -d $out/share/refind/keys/
+
+ # refind uefi app
+ install -D -m0644 refind/refind_${efiPlatform}.efi $out/share/refind/refind_${efiPlatform}.efi
+
+ # uefi drivers
+ install -D -m0644 drivers_${efiPlatform}/*.efi $out/share/refind/drivers_${efiPlatform}/
+
+ # uefi apps
+ install -D -m0644 gptsync/gptsync_${efiPlatform}.efi $out/share/refind/tools_${efiPlatform}/gptsync_${efiPlatform}.efi
+
+ # helper scripts
+ install -D -m0755 refind-install $out/bin/refind-install
+ install -D -m0755 mkrlconf $out/bin/refind-mkrlconf
+ install -D -m0755 mvrefind $out/bin/refind-mvrefind
+ install -D -m0755 fonts/mkfont.sh $out/bin/refind-mkfont
+
+ # sample config files
+ install -D -m0644 refind.conf-sample $out/share/refind/refind.conf-sample
+
+ # docs
+ install -D -m0644 docs/refind/* $out/share/refind/docs/html/
+ install -D -m0644 docs/Styles/* $out/share/refind/docs/Styles/
+ install -D -m0644 README.txt $out/share/refind/docs/README.txt
+ install -D -m0644 NEWS.txt $out/share/refind/docs/NEWS.txt
+ install -D -m0644 BUILDING.txt $out/share/refind/docs/BUILDING.txt
+ install -D -m0644 CREDITS.txt $out/share/refind/docs/CREDITS.txt
+
+ # fonts
+ install -D -m0644 fonts/* $out/share/refind/fonts/
+ rm -f $out/share/refind/fonts/mkfont.sh
+
+ # icons
+ install -D -m0644 icons/*.png $out/share/refind/icons/
+
+ # images
+ install -D -m0644 images/*.{png,bmp} $out/share/refind/images/
+
+ # keys
+ install -D -m0644 keys/* $out/share/refind/keys/
+
+ # Fix variable definition of 'RefindDir' which is used to locate ressource files.
+ sed -i "s,\bRefindDir=.*,RefindDir=$out/share/refind,g" $out/bin/refind-install
+
+ # Patch uses of `which`. We could patch in calls to efibootmgr,
+ # openssl, convert, and openssl, but that would greatly enlarge
+ # refind's closure (from ca 28MB to over 400MB).
+ sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-install
+ sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-mvrefind
+ sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-mkfont
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A graphical {,U}EFI boot manager";
+ longDescription = ''
+ rEFInd is a graphical boot manager for EFI- and UEFI-based
+ computers, such as all Intel-based Macs and recent (most 2011
+ and later) PCs. rEFInd presents a boot menu showing all the EFI
+ boot loaders on the EFI-accessible partitions, and optionally
+ BIOS-bootable partitions on Macs. EFI-compatbile OSes, including
+ Linux, provide boot loaders that rEFInd can detect and
+ launch. rEFInd can launch Linux EFI boot loaders such as ELILO,
+ GRUB Legacy, GRUB 2, and 3.3.0 and later kernels with EFI stub
+ support. EFI filesystem drivers for ext2/3/4fs, ReiserFS, HFS+,
+ and ISO-9660 enable rEFInd to read boot loaders from these
+ filesystems, too. rEFInd's ability to detect boot loaders at
+ runtime makes it very easy to use, particularly when paired with
+ Linux kernels that provide EFI stub support.
+ '';
+ homepage = "http://refind.sourceforge.net/";
+ maintainers = with maintainers; [ AndersonTorres samueldr ];
+ platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ];
+ license = licenses.gpl3Plus;
+ };
+
+}