diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index 324b38070e47..c2836b5a9a1b 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -182,13 +182,29 @@ let # Menu configuration # + # Search using a "marker file" + search --set=root --file /EFI/nixos-installer-image + insmod gfxterm insmod png set gfxpayload=keep + set gfxmode=${concatStringsSep "," [ + # GRUB will use the first valid mode listed here. + # `auto` will sometimes choose the smallest valid mode it detects. + # So instead we'll list a lot of possibly valid modes :/ + #"3840x2160" + #"2560x1440" + "1920x1080" + "1366x768" + "1280x720" + "1024x768" + "800x600" + "auto" + ]} # Fonts can be loaded? # (This font is assumed to always be provided as a fallback by NixOS) - if loadfont /EFI/boot/unicode.pf2; then + if loadfont (\$root)/EFI/boot/unicode.pf2; then set with_fonts=true fi if [ "\$textmode" != "true" -a "\$with_fonts" == "true" ]; then @@ -212,11 +228,11 @@ let ${ # When there is a theme configured, use it, otherwise use the background image. if config.isoImage.grubTheme != null then '' # Sets theme. - set theme=/EFI/boot/grub-theme/theme.txt + set theme=(\$root)/EFI/boot/grub-theme/theme.txt # Load theme fonts - $(find ${config.isoImage.grubTheme} -iname '*.pf2' -printf "loadfont /EFI/boot/grub-theme/%P\n") + $(find ${config.isoImage.grubTheme} -iname '*.pf2' -printf "loadfont (\$root)/EFI/boot/grub-theme/%P\n") '' else '' - if background_image /EFI/boot/efi-background.png; then + if background_image (\$root)/EFI/boot/efi-background.png; then # Black background means transparent background when there # is a background image set... This seems undocumented :( set color_normal=black/black @@ -239,6 +255,9 @@ let } '' mkdir -p $out/EFI/boot/ + # Add a marker so GRUB can find the filesystem. + touch $out/EFI/nixos-installer-image + # ALWAYS required modules. MODULES="fat iso9660 part_gpt part_msdos \ normal boot linux configfile loopback chain halt \ @@ -294,12 +313,12 @@ let ${grubMenuCfg} hiddenentry 'Text mode' --hotkey 't' { - loadfont /EFI/boot/unicode.pf2 + loadfont (\$root)/EFI/boot/unicode.pf2 set textmode=true terminal_output gfxterm console } hiddenentry 'GUI mode' --hotkey 'g' { - $(find ${config.isoImage.grubTheme} -iname '*.pf2' -printf "loadfont /EFI/boot/grub-theme/%P\n") + $(find ${config.isoImage.grubTheme} -iname '*.pf2' -printf "loadfont (\$root)/EFI/boot/grub-theme/%P\n") set textmode=false terminal_output gfxterm } @@ -370,8 +389,10 @@ let ${lib.optionalString (refindBinary != null) '' # GRUB apparently cannot do "chainloader" operations on "CD". if [ "\$root" != "cd0" ]; then + # Force root to be the FAT partition + # Otherwise it breaks rEFInd's boot + search --set=root --no-floppy --fs-uuid 1234-5678 menuentry 'rEFInd' --class refind { - # \$root defaults to the drive the EFI is found on. chainloader (\$root)/EFI/boot/${refindBinary} } fi @@ -403,7 +424,9 @@ let mkdir ./boot cp -p "${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile}" \ "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}" ./boot/ - touch --date=@0 ./EFI ./boot + + # Rewrite dates for everything in the FS + find . -exec touch --date=2000-01-01 {} + usage_size=$(du -sb --apparent-size . | tr -cd '[:digit:]') # Make the image 110% as big as the files need to make up for FAT overhead diff --git a/pkgs/applications/editors/sublime/3/common.nix b/pkgs/applications/editors/sublime/3/common.nix index cc8b835c137c..e353f4f5652f 100644 --- a/pkgs/applications/editors/sublime/3/common.nix +++ b/pkgs/applications/editors/sublime/3/common.nix @@ -2,7 +2,6 @@ { fetchurl, lib, stdenv, xorg, glib, glibcLocales, gtk3, cairo, pango, libredirect, makeWrapper, wrapGAppsHook , pkexecPath ? "/run/wrappers/bin/pkexec" -, writeScript, common-updater-scripts, curl, gnugrep , openssl, bzip2, bash, unzip, zip }: @@ -128,26 +127,6 @@ in stdenv.mkDerivation (rec { done ''; - passthru.updateScript = writeScript "${pname}-update-script" '' - #!${stdenv.shell} - set -o errexit - PATH=${lib.makeBinPath [ common-updater-scripts curl gnugrep ]} - - latestVersion=$(curl -s ${versionUrl}) - - if [[ "${buildVersion}" = "$latestVersion" ]]; then - echo "The new version same as the old version." - exit 0 - fi - - for platform in ${lib.concatStringsSep " " meta.platforms}; do - # The script will not perform an update when the version attribute is up to date from previous platform run - # We need to clear it before each run - update-source-version ${packageAttribute}.${primaryBinary} 0 0000000000000000000000000000000000000000000000000000000000000000 --file=${versionFile} --version-key=buildVersion --system=$platform - update-source-version ${packageAttribute}.${primaryBinary} $latestVersion --file=${versionFile} --version-key=buildVersion --system=$platform - done - ''; - meta = with lib; { description = "Sophisticated text editor for code, markup and prose"; homepage = "https://www.sublimetext.com/"; diff --git a/pkgs/applications/editors/sublime/4/common.nix b/pkgs/applications/editors/sublime/4/common.nix new file mode 100644 index 000000000000..97299bef3ac4 --- /dev/null +++ b/pkgs/applications/editors/sublime/4/common.nix @@ -0,0 +1,148 @@ +{ buildVersion, aarch64sha256, x64sha256, dev ? false }: + +{ fetchurl, stdenv, lib, xorg, glib, libglvnd, glibcLocales, gtk3, cairo, pango, makeWrapper, wrapGAppsHook +, writeShellScript, common-updater-scripts, curl +, openssl, bzip2, bash, unzip, zip +}: + +let + pname = "sublimetext4"; + packageAttribute = "sublime4${lib.optionalString dev "-dev"}"; + binaries = [ "sublime_text" "plugin_host-3.3" "plugin_host-3.8" "crash_reporter" ]; + primaryBinary = "sublime_text"; + primaryBinaryAliases = [ "subl" "sublime" "sublime4" ]; + downloadUrl = "https://download.sublimetext.com/sublime_text_build_${buildVersion}_${arch}.tar.xz"; + versionUrl = "https://download.sublimetext.com/latest/${if dev then "dev" else "stable"}"; + versionFile = builtins.toString ./packages.nix; + archSha256 = { + "aarch64-linux" = aarch64sha256; + "x86_64-linux" = x64sha256; + }.${stdenv.hostPlatform.system}; + arch = { + "aarch64-linux" = "arm64"; + "x86_64-linux" = "x64"; + }.${stdenv.hostPlatform.system}; + + libPath = lib.makeLibraryPath [ xorg.libX11 xorg.libXtst glib libglvnd openssl gtk3 cairo pango ]; +in let + binaryPackage = stdenv.mkDerivation { + pname = "${pname}-bin"; + version = buildVersion; + + src = fetchurl { + url = downloadUrl; + sha256 = archSha256; + }; + + dontStrip = true; + dontPatchELF = true; + buildInputs = [ glib gtk3 ]; # for GSETTINGS_SCHEMAS_PATH + nativeBuildInputs = [ zip unzip makeWrapper wrapGAppsHook ]; + + # make exec.py in Default.sublime-package use own bash with an LD_PRELOAD instead of "/bin/bash" + patchPhase = '' + runHook prePatch + + # TODO: Should not be necessary even in 3 + mkdir Default.sublime-package-fix + ( cd Default.sublime-package-fix + unzip -q ../Packages/Default.sublime-package + substituteInPlace "exec.py" --replace \ + "[\"/bin/bash\"" \ + "[\"$out/sublime_bash\"" + zip -q ../Packages/Default.sublime-package **/* + ) + rm -r Default.sublime-package-fix + + runHook postPatch + ''; + + buildPhase = '' + runHook preBuild + + for binary in ${ builtins.concatStringsSep " " binaries }; do + patchelf \ + --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath ${libPath}:${stdenv.cc.cc.lib}/lib${lib.optionalString stdenv.is64bit "64"} \ + $binary + done + + # Rewrite pkexec argument. Note that we cannot delete bytes in binary. + sed -i -e 's,/bin/cp\x00,cp\x00\x00\x00\x00\x00\x00,g' ${primaryBinary} + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -r * $out/ + + # We can't just call /usr/bin/env bash because a relocation error occurs + # when trying to run a build from within Sublime Text + ln -s ${bash}/bin/bash $out/sublime_bash + + runHook postInstall + ''; + + dontWrapGApps = true; # non-standard location, need to wrap the executables manually + + postFixup = '' + sed -i 's#/usr/bin/pkexec#pkexec\x00\x00\x00\x00\x00\x00\x00\x00\x00#g' "$out/${primaryBinary}" + + wrapProgram $out/${primaryBinary} \ + --set LOCALE_ARCHIVE "${glibcLocales.out}/lib/locale/locale-archive" \ + "''${gappsWrapperArgs[@]}" + ''; + }; +in stdenv.mkDerivation (rec { + inherit pname; + version = buildVersion; + + phases = [ "installPhase" ]; + + ${primaryBinary} = binaryPackage; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p "$out/bin" + makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}" + '' + builtins.concatStringsSep "" (map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases) + '' + mkdir -p "$out/share/applications" + substitute "''$${primaryBinary}/${primaryBinary}.desktop" "$out/share/applications/${primaryBinary}.desktop" --replace "/opt/${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}" + for directory in ''$${primaryBinary}/Icon/*; do + size=$(basename $directory) + mkdir -p "$out/share/icons/hicolor/$size/apps" + ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps + done + ''; + + passthru.updateScript = writeShellScript "${pname}-update-script" '' + set -o errexit + PATH=${lib.makeBinPath [ common-updater-scripts curl ]} + + latestVersion=$(curl -s ${versionUrl}) + + if [[ "${buildVersion}" = "$latestVersion" ]]; then + echo "The new version same as the old version." + exit 0 + fi + + for platform in ${lib.concatStringsSep " " meta.platforms}; do + # The script will not perform an update when the version attribute is up to date from previous platform run + # We need to clear it before each run + update-source-version ${packageAttribute}.${primaryBinary} 0 0000000000000000000000000000000000000000000000000000000000000000 --file=${versionFile} --version-key=buildVersion --system=$platform + update-source-version ${packageAttribute}.${primaryBinary} $latestVersion --file=${versionFile} --version-key=buildVersion --system=$platform + done + ''; + + meta = with lib; { + description = "Sophisticated text editor for code, markup and prose"; + homepage = "https://www.sublimetext.com/"; + maintainers = with maintainers; [ jtojnar wmertens demin-dmitriy zimbatm ]; + license = licenses.unfree; + platforms = [ "aarch64-linux" "x86_64-linux" ]; + }; +}) diff --git a/pkgs/applications/editors/sublime/4/packages.nix b/pkgs/applications/editors/sublime/4/packages.nix new file mode 100644 index 000000000000..b7c3887cc084 --- /dev/null +++ b/pkgs/applications/editors/sublime/4/packages.nix @@ -0,0 +1,19 @@ +{ callPackage }: + +let + common = opts: callPackage (import ./common.nix opts); +in + { + sublime4 = common { + buildVersion = "4107"; + x64sha256 = "05ar7qd1d880442bx4w32mapsib7j27g9l96q2v2s7591r9fgnf7"; + aarch64sha256 = "4MzwhZ17c6cYtlwPA+SBiey6GiVruADXOLJAeJlMrgM="; + } {}; + + sublime4-dev = common { + buildVersion = "4106"; + dev = true; + x64sha256 = "09jnn52zb0mjxpj5xz4sixl34cr6j60x46c2dj1m0dlgxap0sh8x"; + aarch64sha256 = "7blbeSZI0V6q89jMM+zi2ODEdoc1b3Am8F2b2jLr5O8="; + } {}; + } diff --git a/pkgs/development/libraries/caf/default.nix b/pkgs/development/libraries/caf/default.nix index a5baef8af1ed..60281e7e0c9f 100644 --- a/pkgs/development/libraries/caf/default.nix +++ b/pkgs/development/libraries/caf/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "actor-framework"; - version = "0.18.1"; + version = "0.18.3"; src = fetchFromGitHub { owner = "actor-framework"; repo = "actor-framework"; rev = version; - sha256 = "sha256-tRR+YFI/Ikf4rov4dzt59nDqaooALNspKEQehHP6sKU="; + sha256 = "sha256-9oQVsfh2mUVr64PjNXYD1wRBNJ8dCLO9eI5WnZ1SSww="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/libraries/libavif/default.nix b/pkgs/development/libraries/libavif/default.nix index 173422fa71e0..27427d5e6dc9 100644 --- a/pkgs/development/libraries/libavif/default.nix +++ b/pkgs/development/libraries/libavif/default.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "libavif"; - version = "0.9.0"; + version = "0.9.1"; src = fetchFromGitHub { owner = "AOMediaCodec"; repo = pname; rev = "v${version}"; - sha256 = "sha256-7p0w94Od33vjTI5wGLxmDC5P2hebAl7OwJPl1lANhKs="; + sha256 = "sha256-XWPB5JI4V/anvtHFGY4ejeSlBbxzK6KRG8e5vBhxL8A="; }; # reco: encode libaom slowest but best, decode dav1d fastest diff --git a/pkgs/servers/jackett/default.nix b/pkgs/servers/jackett/default.nix index b9c73e602889..ed8ff19ab759 100644 --- a/pkgs/servers/jackett/default.nix +++ b/pkgs/servers/jackett/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "jackett"; - version = "0.18.95"; + version = "0.18.98"; src = fetchurl { url = "https://github.com/Jackett/Jackett/releases/download/v${version}/Jackett.Binaries.Mono.tar.gz"; - sha256 = "sha256-8TkIixPot4V0h4MBh/+WdrWhjgsqyq9wHQyGyfxqZ6s="; + sha256 = "sha256-zWbeS+pRkpLTKC50yHM1TgTzIVslVdsD4lH6sTzFI4k="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/tools/admin/eksctl/default.nix b/pkgs/tools/admin/eksctl/default.nix index 57bc14ba900c..8c068d072e22 100644 --- a/pkgs/tools/admin/eksctl/default.nix +++ b/pkgs/tools/admin/eksctl/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "eksctl"; - version = "0.48.0"; + version = "0.51.0"; src = fetchFromGitHub { owner = "weaveworks"; repo = pname; rev = version; - sha256 = "sha256-jhf+FIhKkROyNUYh96zFrzxE5hVFnxF6xrTwvivj9B8="; + sha256 = "sha256-OTgcQLYtUAf7EeaEafzfPG02SGjVvSAVvVGI4A/S0Zs="; }; - vendorSha256 = "sha256-U5NAhhum+VsSlhB3pHMmnkaqjWvZJw4BDHVIo4YIkrY="; + vendorSha256 = "sha256-RkUr4ytoFa6/luaxDLj0FiF3cs9fJav0JHcZCN46Mqs="; doCheck = false; diff --git a/pkgs/tools/filesystems/curlftpfs/default.nix b/pkgs/tools/filesystems/curlftpfs/default.nix index 2c5d886c14df..8c8fe31624fe 100644 --- a/pkgs/tools/filesystems/curlftpfs/default.nix +++ b/pkgs/tools/filesystems/curlftpfs/default.nix @@ -1,11 +1,21 @@ { lib, stdenv, fetchurl, autoreconfHook, fuse, curl, pkg-config, glib, zlib }: -stdenv.mkDerivation { - name = "curlftpfs-0.9.2"; +stdenv.mkDerivation rec { + pname = "curlftpfs"; + version = "0.9.2"; + src = fetchurl { - url = "mirror://sourceforge/curlftpfs/curlftpfs-0.9.2.tar.gz"; + url = "mirror://sourceforge/curlftpfs/curlftpfs-${version}.tar.gz"; sha256 = "0n397hmv21jsr1j7zx3m21i7ryscdhkdsyqpvvns12q7qwwlgd2f"; }; + + patches = [ + # This removes AC_FUNC_MALLOC and AC_FUNC_REALLOC from configure.ac because + # it is known to cause problems. Search online for "rpl_malloc" and + # "rpl_realloc" to find out more. + ./fix-rpl_malloc.patch + ]; + nativeBuildInputs = [ autoreconfHook pkg-config ]; buildInputs = [ fuse curl glib zlib ]; @@ -24,7 +34,7 @@ stdenv.mkDerivation { meta = with lib; { description = "Filesystem for accessing FTP hosts based on FUSE and libcurl"; homepage = "http://curlftpfs.sourceforge.net"; - license = licenses.gpl2; + license = licenses.gpl2Only; platforms = platforms.unix; }; } diff --git a/pkgs/tools/filesystems/curlftpfs/fix-rpl_malloc.patch b/pkgs/tools/filesystems/curlftpfs/fix-rpl_malloc.patch new file mode 100644 index 000000000000..0265e1d82893 --- /dev/null +++ b/pkgs/tools/filesystems/curlftpfs/fix-rpl_malloc.patch @@ -0,0 +1,13 @@ +diff -Naur a/configure.ac b/configure.ac +--- a/configure.ac 2008-04-23 20:37:42.000000000 +0900 ++++ b/configure.ac 2021-05-16 01:28:24.000000000 +0900 +@@ -46,9 +46,7 @@ + + # Checks for library functions. + AC_FUNC_CHOWN +-AC_FUNC_MALLOC + AC_FUNC_MKTIME +-AC_FUNC_REALLOC + AC_FUNC_SELECT_ARGTYPES + AC_FUNC_STRFTIME + AC_FUNC_UTIME_NULL diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a374b6dfab00..fbfc9fd3c190 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26503,6 +26503,10 @@ in sublime3-dev = sublime3Packages.sublime3-dev; + inherit (recurseIntoAttrs (callPackage ../applications/editors/sublime/4/packages.nix { })) + sublime4 + sublime4-dev; + inherit (callPackage ../applications/version-management/sublime-merge {}) sublime-merge sublime-merge-dev;