{ stdenv, fetchurl, fetchpatch, gnu-efi }: let archids = { "x86_64-linux" = { hostarch = "x86_64"; efiPlatform = "x64"; }; "i686-linux" = rec { hostarch = "ia32"; efiPlatform = hostarch; }; }; inherit (archids.${stdenv.system} or (throw "unsupported system: ${stdenv.system}")) hostarch efiPlatform; in stdenv.mkDerivation rec { name = "refind-${version}"; version = "0.11.2"; srcName = "refind-src-${version}"; src = fetchurl { url = "mirror://sourceforge/project/refind/${version}/${srcName}.tar.gz"; sha256 = "1k0xpm4y0gk1rxqdyprqyqpg5j16xw3l2gm3d9zpi5n9id43jkzn"; }; 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}" ]; 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/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 # 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/ # 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 <