anchor.diff:      install -d $out/share/refind/keys/
   
       # refind uefi app
  -    install -D -m0644 refind/refind_${HOSTARCH}.efi $out/share/refind/refind_${HOSTARCH}.efi
  +    install -D -m0644 refind/refind_${efiPlatform}.efi $out/share/refind/refind_${efiPlatform}.efi
   
       # uefi drivers
  -    install -D -m0644 drivers_${HOSTARCH}/*.efi $out/share/refind/drivers_${HOSTARCH}/
  +    install -D -m0644 drivers_${efiPlatform}/*.efi $out/share/refind/drivers_${efiPlatform}/
   
       # uefi apps
  -    install -D -m0644 gptsync/gptsync_${HOSTARCH}.efi $out/share/refind/tools_${HOSTARCH}/gptsync_${HOSTARCH}.efi
  +    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 refind-install $out/share/refind/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
  
positive.code:     sed -e 's|-m64|-maccumulate-outgoing-args -m64|g' -i filesystems/Make.gnuefi
    '';
  
    buildPhase =
      let ldScript =
        if stdenv.system == "x86_64-linux" then "elf_x86_64_efi.lds"
        else if stdenv.system == "i686-linux" then "elf_ia32_efi.lds" else "null";
      in ''
        make prefix= EFIINC=${gnu-efi}/include/efi EFILIB=${gnu-efi}/lib GNUEFILIB=${gnu-efi}/lib EFICRT0=${gnu-efi}/lib LDSCRIPT=${gnu-efi}/lib/${ldScript} 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/
  
negative.code:     # keys
      install -D -m0644 keys/* $out/share/refind/keys/
  
      # The refind-install script assumes that all resource files are
      # installed under the same directory as the script itself. To avoid
      # having to patch around this assumption, generate a wrapper that
      # cds into $out/share/refind and executes the real script from
      # there.
      cat >$out/bin/refind-install <<EOF
  #! ${stdenv.shell}
  cd $out/share/refind && exec -a $out/bin/refind-install ./refind-install \$*
  EOF
      chmod +x $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/share/refind/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
  