diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/bootloaders/refind/default.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/bootloaders/refind/default.nix | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/bootloaders/refind/default.nix b/nixpkgs/pkgs/tools/bootloaders/refind/default.nix new file mode 100644 index 000000000000..0cdcd4c58df4 --- /dev/null +++ b/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" = rec { hostarch = "aarch64"; efiPlatform = "aa64"; }; + }; + + inherit + (archids.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}")) + hostarch efiPlatform; +in + +stdenv.mkDerivation rec { + name = "refind-${version}"; + version = "0.11.4"; + srcName = "refind-src-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/project/refind/${version}/${srcName}.tar.gz"; + sha256 = "1bjd0dl77bc5k6g3kc7s8m57vpbg2zscph9qh84xll9rc10g3fir"; + }; + + 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 = [ maintainers.AndersonTorres ]; + platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ]; + license = licenses.gpl3Plus; + }; + +} |