summary refs log tree commit diff
path: root/pkgs/tools/bootloaders/refind/default.nix
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@gmail.com>2015-01-13 10:56:05 -0200
committerAndersonTorres <torres.anderson.85@gmail.com>2015-01-14 21:46:49 -0200
commitf92889429229b4bc75bcb8a7536a7e6726e353a2 (patch)
tree351cbc508c4e613a8616e9375588ff6f3c146885 /pkgs/tools/bootloaders/refind/default.nix
parentdfc048877275c941760fa29837ff06e4046962a3 (diff)
downloadnixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.tar
nixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.tar.gz
nixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.tar.bz2
nixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.tar.lz
nixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.tar.xz
nixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.tar.zst
nixpkgs-f92889429229b4bc75bcb8a7536a7e6726e353a2.zip
rEFInd (version 0.8.4): New Package
rEFInd is a graphical, EFI-based boot manager
Diffstat (limited to 'pkgs/tools/bootloaders/refind/default.nix')
-rw-r--r--pkgs/tools/bootloaders/refind/default.nix115
1 files changed, 115 insertions, 0 deletions
diff --git a/pkgs/tools/bootloaders/refind/default.nix b/pkgs/tools/bootloaders/refind/default.nix
new file mode 100644
index 00000000000..85a544ccd4c
--- /dev/null
+++ b/pkgs/tools/bootloaders/refind/default.nix
@@ -0,0 +1,115 @@
+{ stdenv, fetchurl
+, unzip, gnu-efi, efibootmgr, dosfstools, imagemagick }:
+
+assert (stdenv.system == "x86_64-linux" ||stdenv.system == "i686-linux");
+
+stdenv.mkDerivation rec {
+
+  name = "refind-${version}";
+  srcName = "refind-src-${version}";
+  version = "0.8.4";
+
+  src = fetchurl {
+    url = "http://downloads.sourceforge.net/project/refind/${version}/${srcName}.zip";
+    sha256 = "09g6x41fc7vvwv2y9kggjmazyhdvkn8qr02v769x33f20bfiz2zc";
+  };
+
+  buildInputs = [ unzip gnu-efi efibootmgr dosfstools imagemagick ];
+
+  HOSTARCH =
+    if stdenv.system == "x86_64-linux" then "x64"
+    else if stdenv.system == "i686-linux" then "ia32" else "null";
+
+  patchPhase = ''
+    sed -e 's|-DEFI_FUNCTION_WRAPPER|-DEFI_FUNCTION_WRAPPER -maccumulate-outgoing-args|g' -i Make.common
+    sed -e 's|-DEFIX64|-DEFIX64 -maccumulate-outgoing-args|g' -i Make.common
+    sed -e 's|-m64|-maccumulate-outgoing-args -m64|g' -i filesystems/Make.gnuefi
+  '';
+
+  buildPhase = ''
+    make prefix= EFIINC=${gnu-efi}/include/efi EFILIB=${gnu-efi}/lib GNUEFILIB=${gnu-efi}/lib  EFICRT0=${gnu-efi}/lib LDSCRIPT=${gnu-efi}/lib/elf_x86_64_efi.lds gnuefi fs_gnuefi
+  '';
+
+  installPhase = ''
+    install -d $out/bin/
+    install -d $out/share/refind/drivers_${HOSTARCH}/
+    install -d $out/share/refind/tools_${HOSTARCH}/
+    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_${HOSTARCH}.efi $out/share/refind/refind_${HOSTARCH}.efi
+
+    # uefi drivers
+    install -D -m0644 drivers_${HOSTARCH}/*.efi $out/share/refind/drivers_${HOSTARCH}/
+
+    # uefi apps
+    install -D -m0644 gptsync/gptsync_${HOSTARCH}.efi $out/share/refind/tools_${HOSTARCH}/gptsync_${HOSTARCH}.efi
+
+    # helper scripts
+    install -D -m0755 install.sh $out/bin/refind-install
+    install -D -m0755 mkrlconf.sh $out/bin/refind-mkrlconf
+    install -D -m0755 mvrefind.sh $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/* $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 sharp-bang paths
+    patchShebangs $out/bin/refind-*
+
+    # Post-install fixes
+    sed -e "s|^ThisDir=.*|ThisDir=$out/share/refind/|g" -i $out/bin/refind-install
+    sed -e "s|^RefindDir=.*|RefindDir=$out/share/refind/|g" -i $out/bin/refind-install
+    sed -e "s|^ThisScript=.*|ThisScript=$out/bin/refind-install|g" -i $out/bin/refind-install
+  '';
+
+  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" ];
+  };
+
+}
+# TODO: detect CPU host architecture (HOSTARCH can be ia32 or x64)