diff options
author | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
---|---|---|
committer | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
commit | c4625b175f8200f643fd6e11010932ea44c78433 (patch) | |
tree | bce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/tools/bootloaders | |
parent | 49f735974dd103039ddc4cb576bb76555164a9e7 (diff) | |
parent | d661aa56a8843e991261510c1bb28fdc2f6975ae (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.patch | 27 | ||||
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/tools/bootloaders/refind/default.nix | 129 |
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; + }; + +} |