diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index 023d0791a5c7..7d40d3b5548e 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -15,6 +15,8 @@ , # size of the boot partition, is only used if partitionTableType is # either "efi" or "hybrid" + # This will be undersized slightly, as this is actually the offset of + # the end of the partition. Generally it will be 1MiB smaller. bootSize ? "256M" , # The files and directories to be placed in the target file system. @@ -163,6 +165,8 @@ let format' = format; in let closureInfo = pkgs.closureInfo { rootPaths = [ config.system.build.toplevel channelSources ]; }; + blockSize = toString (4 * 1024); # ext4fs block size (not block device sector size) + prepareImage = '' export PATH=${binPath} @@ -175,6 +179,24 @@ let format' = format; in let echo $(( "$1" * 512 )) } + # Given lines of numbers, adds them together + sum_lines() { + local acc=0 + while read -r number; do + acc=$((acc+number)) + done + echo "$acc" + } + + mebibyte=$(( 1024 * 1024 )) + + # Approximative percentage of reserved space in an ext4 fs over 512MiB. + # 0.05208587646484375 + # × 1000, integer part: 52 + compute_fudge() { + echo $(( $1 * 52 / 1000 )) + } + mkdir $out root="$PWD/root" @@ -235,12 +257,53 @@ let format' = format; in let ${if diskSize == "auto" then '' ${if partitionTableType == "efi" || partitionTableType == "hybrid" then '' - additionalSpace=$(( ($(numfmt --from=iec '${additionalSpace}') + $(numfmt --from=iec '${bootSize}')) / 1000 )) + # Add the GPT at the end + gptSpace=$(( 512 * 34 * 1 )) + # Normally we'd need to account for alignment and things, if bootSize + # represented the actual size of the boot partition. But it instead + # represents the offset at which it ends. + # So we know bootSize is the reserved space in front of the partition. + reservedSpace=$(( gptSpace + $(numfmt --from=iec '${bootSize}') )) + '' else if partitionTableType == "legacy+gpt" then '' + # Add the GPT at the end + gptSpace=$(( 512 * 34 * 1 )) + # And include the bios_grub partition; the ext4 partition starts at 2MB exactly. + reservedSpace=$(( gptSpace + 2 * mebibyte )) + '' else if partitionTableType == "legacy" then '' + # Add the 1MiB aligned reserved space (includes MBR) + reservedSpace=$(( mebibyte )) '' else '' - additionalSpace=$(( $(numfmt --from=iec '${additionalSpace}') / 1000 )) + reservedSpace=0 ''} - diskSize=$(( $(set -- $(du -d0 $root); echo "$1") + $additionalSpace )) - truncate -s "$diskSize"K $diskImage + additionalSpace=$(( $(numfmt --from=iec '${additionalSpace}') + reservedSpace )) + + # Compute required space in filesystem blocks + diskUsage=$(find . ! -type d -exec 'du' '--apparent-size' '--block-size' "${blockSize}" '{}' ';' | cut -f1 | sum_lines) + # Each inode takes space! + numInodes=$(find . | wc -l) + # Convert to bytes, inodes take two blocks each! + diskUsage=$(( (diskUsage + 2 * numInodes) * ${blockSize} )) + # Then increase the required space to account for the reserved blocks. + fudge=$(compute_fudge $diskUsage) + requiredFilesystemSpace=$(( diskUsage + fudge )) + + diskSize=$(( requiredFilesystemSpace + additionalSpace )) + + # Round up to the nearest mebibyte. + # This ensures whole 512 bytes sector sizes in the disk image + # and helps towards aligning partitions optimally. + if (( diskSize % mebibyte )); then + diskSize=$(( ( diskSize / mebibyte + 1) * mebibyte )) + fi + + truncate -s "$diskSize" $diskImage + + printf "Automatic disk size...\n" + printf " Closure space use: %d bytes\n" $diskUsage + printf " fudge: %d bytes\n" $fudge + printf " Filesystem size needed: %d bytes\n" $requiredFilesystemSpace + printf " Additional space: %d bytes\n" $additionalSpace + printf " Disk image size: %d bytes\n" $diskSize '' else '' truncate -s ${toString diskSize}M $diskImage ''} @@ -251,9 +314,9 @@ let format' = format; in let # Get start & length of the root partition in sectors to $START and $SECTORS. eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs) - mkfs.${fsType} -F -L ${label} $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K + mkfs.${fsType} -b ${blockSize} -F -L ${label} $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K '' else '' - mkfs.${fsType} -F -L ${label} $diskImage + mkfs.${fsType} -b ${blockSize} -F -L ${label} $diskImage ''} echo "copying staging root to image..." @@ -283,6 +346,9 @@ in pkgs.vmTools.runInLinuxVM ( # Some tools assume these exist ln -s vda /dev/xvda ln -s vda /dev/sda + # make systemd-boot find ESP without udev + mkdir /dev/block + ln -s /dev/vda1 /dev/block/254:1 mountPoint=/mnt mkdir $mountPoint diff --git a/nixos/maintainers/scripts/cloudstack/cloudstack-image.nix b/nixos/maintainers/scripts/cloudstack/cloudstack-image.nix index 37b46db059c0..005f75476e9a 100644 --- a/nixos/maintainers/scripts/cloudstack/cloudstack-image.nix +++ b/nixos/maintainers/scripts/cloudstack/cloudstack-image.nix @@ -10,7 +10,6 @@ with lib; system.build.cloudstackImage = import ../../../lib/make-disk-image.nix { inherit lib config pkgs; - diskSize = 8192; format = "qcow2"; configFile = pkgs.writeText "configuration.nix" '' diff --git a/nixos/maintainers/scripts/ec2/amazon-image.nix b/nixos/maintainers/scripts/ec2/amazon-image.nix index 0ecf07669a11..653744986d13 100644 --- a/nixos/maintainers/scripts/ec2/amazon-image.nix +++ b/nixos/maintainers/scripts/ec2/amazon-image.nix @@ -40,8 +40,9 @@ in { }; sizeMB = mkOption { - type = types.int; - default = if config.ec2.hvm then 2048 else 8192; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 8192; description = "The size in MB of the image"; }; diff --git a/nixos/maintainers/scripts/openstack/openstack-image.nix b/nixos/maintainers/scripts/openstack/openstack-image.nix index 4c464f43f61d..3255e7f3d44d 100644 --- a/nixos/maintainers/scripts/openstack/openstack-image.nix +++ b/nixos/maintainers/scripts/openstack/openstack-image.nix @@ -12,8 +12,8 @@ with lib; system.build.openstackImage = import ../../../lib/make-disk-image.nix { inherit lib config; + additionalSpace = "1024M"; pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package - diskSize = 8192; format = "qcow2"; configFile = pkgs.writeText "configuration.nix" '' diff --git a/nixos/modules/virtualisation/azure-image.nix b/nixos/modules/virtualisation/azure-image.nix index 60fed3222ef3..03dd3c051309 100644 --- a/nixos/modules/virtualisation/azure-image.nix +++ b/nixos/modules/virtualisation/azure-image.nix @@ -9,8 +9,9 @@ in options = { virtualisation.azureImage.diskSize = mkOption { - type = with types; int; - default = 2048; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 2048; description = '' Size of disk image. Unit is MB. ''; diff --git a/nixos/modules/virtualisation/digital-ocean-image.nix b/nixos/modules/virtualisation/digital-ocean-image.nix index b582e235d435..0ff2ee591f24 100644 --- a/nixos/modules/virtualisation/digital-ocean-image.nix +++ b/nixos/modules/virtualisation/digital-ocean-image.nix @@ -10,8 +10,9 @@ in options = { virtualisation.digitalOceanImage.diskSize = mkOption { - type = with types; int; - default = 4096; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 4096; description = '' Size of disk image. Unit is MB. ''; diff --git a/nixos/modules/virtualisation/google-compute-image.nix b/nixos/modules/virtualisation/google-compute-image.nix index e2332df611aa..79c3921669ed 100644 --- a/nixos/modules/virtualisation/google-compute-image.nix +++ b/nixos/modules/virtualisation/google-compute-image.nix @@ -18,8 +18,9 @@ in options = { virtualisation.googleComputeImage.diskSize = mkOption { - type = with types; int; - default = 1536; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 1536; description = '' Size of disk image. Unit is MB. ''; diff --git a/nixos/modules/virtualisation/hyperv-image.nix b/nixos/modules/virtualisation/hyperv-image.nix index fabc9113dfc4..6845d6750092 100644 --- a/nixos/modules/virtualisation/hyperv-image.nix +++ b/nixos/modules/virtualisation/hyperv-image.nix @@ -9,8 +9,9 @@ in { options = { hyperv = { baseImageSize = mkOption { - type = types.int; - default = 2048; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 2048; description = '' The size of the hyper-v base image in MiB. ''; diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix index fa580e8b42d6..071edda82693 100644 --- a/nixos/modules/virtualisation/virtualbox-image.nix +++ b/nixos/modules/virtualisation/virtualbox-image.nix @@ -11,8 +11,9 @@ in { options = { virtualbox = { baseImageSize = mkOption { - type = types.int; - default = 50 * 1024; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 50 * 1024; description = '' The size of the VirtualBox base image in MiB. ''; diff --git a/nixos/modules/virtualisation/vmware-image.nix b/nixos/modules/virtualisation/vmware-image.nix index 9da9e145f7a9..f6cd12e2bb79 100644 --- a/nixos/modules/virtualisation/vmware-image.nix +++ b/nixos/modules/virtualisation/vmware-image.nix @@ -18,8 +18,9 @@ in { options = { vmware = { baseImageSize = mkOption { - type = types.int; - default = 2048; + type = with types; either (enum [ "auto" ]) int; + default = "auto"; + example = 2048; description = '' The size of the VMWare base image in MiB. ''; diff --git a/pkgs/applications/audio/flacon/default.nix b/pkgs/applications/audio/flacon/default.nix index a9dc7308aca2..83d9c5da8381 100644 --- a/pkgs/applications/audio/flacon/default.nix +++ b/pkgs/applications/audio/flacon/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "flacon"; - version = "6.1.0"; + version = "7.0.1"; src = fetchFromGitHub { owner = "flacon"; repo = "flacon"; rev = "v${version}"; - sha256 = "04yp3aym7h70xjni9ancqv5lc4zds5a8dgw3fzgqs8k5nmh074gv"; + sha256 = "sha256-35tARJkyhC8EisIyDCwuT/UUruzLjJRUuZysuqeNssM="; }; nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ]; diff --git a/pkgs/applications/audio/mousai/default.nix b/pkgs/applications/audio/mousai/default.nix new file mode 100644 index 000000000000..502842c7aa73 --- /dev/null +++ b/pkgs/applications/audio/mousai/default.nix @@ -0,0 +1,69 @@ +{ lib +, python3 +, fetchFromGitHub +, appstream-glib +, desktop-file-utils +, gettext +, glib +, gobject-introspection +, gst_all_1 +, gtk3 +, libhandy +, librsvg +, meson +, ninja +, pkg-config +, wrapGAppsHook +}: + +python3.pkgs.buildPythonApplication rec { + pname = "mousai"; + version = "0.3.1"; + + format = "other"; + + src = fetchFromGitHub { + owner = "SeaDve"; + repo = "Mousai"; + rev = "v${version}"; + sha256 = "0x57dci0prhlj79h74yh79cazn48rn0bckz5j3z4njk4fwc3fvfx"; + }; + + postPatch = '' + patchShebangs build-aux/meson + ''; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + gettext + glib + gtk3 + meson + ninja + pkg-config + wrapGAppsHook + ]; + + buildInputs = [ + gobject-introspection + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gtk3 + libhandy + librsvg + ]; + + propagatedBuildInputs = with python3.pkgs; [ + pygobject3 + requests + ]; + + meta = with lib; { + description = "Identify any songs in seconds"; + homepage = "https://github.com/SeaDve/Mousai"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ dotlambda ]; + }; +} diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 2c067250309b..000726dd81aa 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -12,14 +12,14 @@ assert stdenv ? glibc; # find the downloads needed for new versions # # to test: -# $ for e in cpp modeling platform sdk java committers rcp rust; do nix build -f default.nix pkgs.eclipses.eclipse-${e} -o eclipse-${e}; done +# $ for e in cpp modeling platform sdk java jee committers rcp; do nix build -f default.nix pkgs.eclipses.eclipse-${e} -o eclipse-${e}; done let platform_major = "4"; - platform_minor = "18"; - year = "2020"; - month = "12"; - timestamp = "${year}${month}021800"; + platform_minor = "19"; + year = "2021"; + month = "03"; + timestamp = "${year}${month}031800"; gtk = gtk3; in rec { @@ -37,7 +37,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "MR6ddNmBKyXCyVGlGPfq6K2zJRywy4I5QDXji3rh81eJQ6zkEguo+VvD75i/szg/+FbCVA09vDVV06JgL4SHwQ=="; + sha512 = "3j0lmll0glcr9p0hf49jiaq9xr8hadsy0y58wbbkdpldj3rclxr056dkswmiw2bkypfiwrjygbli5qxyp6mz380562hc2kjwijqq476"; }; }; @@ -49,7 +49,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-modeling-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "hSi3IL+fWhlUfEJYv4LFO7WNbZpiofAgNGZbEOIBS0VpeHfJ5Y6UKMKMLfQlG3hlkAL5jg/cEJKb/ad4DxHbjQ=="; + sha512 = "0iqz9a3ixcbmaci6lnspdnzwd2h1fcygi54hmsl89pq3d1k5scyhcl123ixi24csi782w847bn0lq00n0zwras9akmnhsflra4mw5pz"; }; }; @@ -61,7 +61,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-platform-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz"; - sha512 = "cPRa7ICogpcuwzOlzSSCEcWpwpUhQuIv6lGBKuAu9mOwj7Nz0TPaWVWNqN1541uVRXVTzcWX+mwc2UBPzWUPxg=="; + sha512 = "03v1ly7j9d9qnl3d9rl5a9kp483dz8i8v3cfnh55ksm9fk8iy2fzg6wq178ggnx2z5x9k88a4wk6n647yilh2hgc2l7926imkh2j1ly"; }; }; @@ -86,7 +86,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-SDK-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz"; - sha512 = "iN6z5iSJ2bhE1IH3uJj7aiaF/nSIgIAqadvaTBpE4gkgLAXgtfraFAzgcw0zJr5m2u5mULfW45hLkmIXselniQ=="; + sha512 = "37m91my121pch12bwpwk5svfqkm7vl07wjx4fkhpy947v5kjf36hm6x0i45swdg7f0hk72y2qz5ka15ki5jv890qy5psj6z7ax9sys7"; }; }; @@ -98,7 +98,19 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-java-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "HVqsWUVNNRdcaziGdNI96R9F2VMUE4nYK1VX1G3pK+srFDlkJ7+rj2sZjtWL7WcJR1XSbT03nJJzPyp01RsCvQ=="; + sha512 = "3qrnj6krhrqc9rfwlim3v7kshwfhsi050pszw6xdfbj56mzr9whr7l76isbpxd5j0zipgfw3qrzrx379pdp899d35fv284ilvllzl4k"; + }; + }; + + ### Eclipse Java EE + + eclipse-jee = buildEclipse { + name = "eclipse-jee-${platform_major}.${platform_minor}"; + description = "Eclipse IDE for Enterprise Java and Web Developers"; + src = + fetchurl { + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-jee-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; + sha512 = "04k4x9imabxddqlrgajn33ak8i58wcap40ll09xz23d1sxn9a8prh01s06ymgwg6ldg939srphvbz4112p8p0b1hl7m25a02qll91zv"; }; }; @@ -110,7 +122,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-committers-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "UtI4piLNRM3TsM9PzbGgsPqTkiurJ+7Q7jVra45an4YJHtfWcGTxxwUNnRzay6cHT49AjrWtVf1bovWSDXMiQA=="; + sha512 = "2yksl3w7yr1a3h4zdpa9zf394r5c185zqxhigdv858ldg46kmr9h0l2c7shbgb16kkybcnrk4x44dhjvh60x8xw6ma05klp4lp9v5va"; }; }; @@ -122,19 +134,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-rcp-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "9DqNjSx1Ypdzpt1jIOJ9KFx8y+cG55K6bqkWTqnGjjDr4h4mWSzvGjHGUtFrKl92WRzQZKjNPxzVreDMcUkc/g=="; - }; - }; - - ### Eclipse IDE for Rust Developers - - eclipse-rust = buildEclipse { - name = "eclipse-rust-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for Rust Developers"; - src = - fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-rust-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "QbaG1knCMFnVQkPeApcIamJMXPyL8zUQa0ZsTJOuTgU/fD1RiHN7/WS6ax5azzIJhpjEtj2LMU4XV+MwkzResw=="; + sha512 = "3fhrhwbyqcys56c93s1vl9rbvn269nn5y3cb9f3n1qwgw6i97mim2zy98jl3r8cksf97jwsmqmsqclsgz9v799wcckv81dj1l628382"; }; }; diff --git a/pkgs/applications/editors/eclipse/plugins.nix b/pkgs/applications/editors/eclipse/plugins.nix index dc86ebca2146..5937311b5c93 100644 --- a/pkgs/applications/editors/eclipse/plugins.nix +++ b/pkgs/applications/editors/eclipse/plugins.nix @@ -248,12 +248,12 @@ rec { cdt = buildEclipseUpdateSite rec { name = "cdt-${version}"; # find current version at https://www.eclipse.org/cdt/downloads.php - version = "10.1.0"; + version = "10.2.0"; src = fetchzip { stripRoot = false; - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/10.1/${name}/${name}.zip"; - sha256 = "1hbswcar3a5cw20mwrj82w9pvpkvvj6jrvqqf1lincva0r5sl7h8"; + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/10.2/${name}/${name}.zip"; + sha256 = "1r30cbpbzw3dfcsn54p6sqip86dqhydhsppjgaz60b6z138vzx49"; }; meta = with lib; { @@ -474,24 +474,6 @@ rec { }; }; - jdt = buildEclipseUpdateSite rec { - name = "jdt-${version}"; - version = "4.18"; - - src = fetchzip { - stripRoot = false; - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-${version}-202012021800/org.eclipse.jdt-${version}.zip"; - sha256 = "q0O6OE2u0bdz1+nOkzXDrrOOzoEbVaXnejx4lX7uZgk="; - }; - - meta = with lib; { - homepage = "https://www.eclipse.org/jdt/"; - description = "Eclipse Java development tools"; - license = licenses.epl10; - platforms = platforms.all; - }; - }; - jdt-codemining = buildEclipsePlugin rec { name = "jdt-codemining-${version}"; version = "1.0.0.201806221018"; diff --git a/pkgs/applications/graphics/openboard/default.nix b/pkgs/applications/graphics/openboard/default.nix new file mode 100644 index 000000000000..859c22192181 --- /dev/null +++ b/pkgs/applications/graphics/openboard/default.nix @@ -0,0 +1,115 @@ +{ mkDerivation, lib, fetchFromGitHub, copyDesktopItems, makeDesktopItem, qmake +, qtbase, qtxmlpatterns, qttools, qtwebkit, libGL, fontconfig, openssl, poppler +, ffmpeg, libva, alsaLib, SDL, x264, libvpx, libvorbis, libtheora, libogg +, libopus, lame, fdk_aac, libass, quazip, libXext, libXfixes }: + +let + importer = mkDerivation rec { + pname = "openboard-importer"; + version = "unstable-2016-10-08"; + + src = fetchFromGitHub { + owner = "OpenBoard-org"; + repo = "OpenBoard-Importer"; + rev = "47927bda021b4f7f1540b794825fb0d601875e79"; + sha256 = "19zhgsimy0f070caikc4vrrqyc8kv2h6rl37sy3iggks8z0g98gf"; + }; + + nativeBuildInputs = [ qmake ]; + + installPhase = '' + install -Dm755 OpenBoardImporter $out/bin/OpenBoardImporter + ''; + }; +in mkDerivation rec { + pname = "openboard"; + version = "1.6.1"; + + src = fetchFromGitHub { + owner = "OpenBoard-org"; + repo = "OpenBoard"; + rev = "v${version}"; + sha256 = "sha256-OlGXGIMghil/GG6eso20+CWo/hCjarXGs6edXX9pc/M="; + }; + + postPatch = '' + substituteInPlace OpenBoard.pro \ + --replace '/usr/include/quazip' '${quazip}/include/quazip5' \ + --replace '/usr/include/poppler' '${poppler.dev}/include/poppler' + ''; + + nativeBuildInputs = [ qmake copyDesktopItems ]; + + buildInputs = [ + qtbase + qtxmlpatterns + qttools + qtwebkit + libGL + fontconfig + openssl + poppler + ffmpeg + libva + alsaLib + SDL + x264 + libvpx + libvorbis + libtheora + libogg + libopus + lame + fdk_aac + libass + quazip + libXext + libXfixes + ]; + + propagatedBuildInputs = [ importer ]; + + makeFlags = [ "release-install" ]; + + desktopItems = [ + (makeDesktopItem { + name = "OpenBoard"; + exec = "OpenBoard %f"; + icon = "OpenBoard"; + comment = "OpenBoard, an interactive white board application"; + desktopName = "OpenBoard"; + mimeType = "application/ubz"; + categories = "Education;"; + startupNotify = true; + }) + ]; + + installPhase = '' + runHook preInstall + + lrelease OpenBoard.pro + + # Replicated release_scripts/linux/package.sh + mkdir -p $out/opt/openboard/i18n + cp -R resources/customizations build/linux/release/product/* $out/opt/openboard/ + cp resources/i18n/*.qm $out/opt/openboard/i18n/ + install -m644 resources/linux/openboard-ubz.xml $out/opt/openboard/etc/ + install -Dm644 resources/images/OpenBoard.png $out/share/icons/hicolor/64x64/apps/OpenBoard.png + + runHook postInstall + ''; + + dontWrapQtApps = true; + + postFixup = '' + makeWrapper $out/opt/openboard/OpenBoard $out/bin/OpenBoard \ + "''${qtWrapperArgs[@]}" + ''; + + meta = with lib; { + description = "Interactive whiteboard application"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ fufexan ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/radio/wsjtx/default.nix b/pkgs/applications/radio/wsjtx/default.nix index 697a28e4be9b..ae378b571068 100644 --- a/pkgs/applications/radio/wsjtx/default.nix +++ b/pkgs/applications/radio/wsjtx/default.nix @@ -1,15 +1,15 @@ { lib, stdenv, fetchurl, asciidoc, asciidoctor, autoconf, automake, cmake, docbook_xsl, fftw, fftwFloat, gfortran, libtool, libusb1, qtbase, - qtmultimedia, qtserialport, qttools, texinfo, wrapQtAppsHook }: + qtmultimedia, qtserialport, qttools, boost, texinfo, wrapQtAppsHook }: stdenv.mkDerivation rec { pname = "wsjtx"; - version = "2.2.2"; + version = "2.3.1"; # This is a "superbuild" tarball containing both wsjtx and a hamlib fork src = fetchurl { url = "http://physics.princeton.edu/pulsar/k1jt/wsjtx-${version}.tgz"; - sha256 = "17agyrhclqyahgdwba8vi9sl7vq03sm00jlyrmjgv34a4czidg0w"; + sha256 = "11wzh4bxp9277kbqkyrc063akkk09czgxnkpk8k07vl4s3dan3hh"; }; # Hamlib builds with autotools, wsjtx builds with cmake @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { asciidoc asciidoctor autoconf automake cmake docbook_xsl gfortran libtool qttools texinfo wrapQtAppsHook ]; - buildInputs = [ fftw fftwFloat libusb1 qtbase qtmultimedia qtserialport ]; + buildInputs = [ fftw fftwFloat libusb1 qtbase qtmultimedia qtserialport boost ]; # Remove Git dependency from superbuild since sources are included patches = [ ./super.patch ]; @@ -36,6 +36,6 @@ stdenv.mkDerivation rec { # Older licenses are for the statically-linked hamlib license = with licenses; [ gpl3Plus gpl2Plus lgpl21Plus ]; platforms = platforms.linux; - maintainers = with maintainers; [ lasandell ]; + maintainers = with maintainers; [ lasandell numinit ]; }; } diff --git a/pkgs/applications/science/logic/alt-ergo/default.nix b/pkgs/applications/science/logic/alt-ergo/default.nix index dd72d148e297..963015b11d50 100644 --- a/pkgs/applications/science/logic/alt-ergo/default.nix +++ b/pkgs/applications/science/logic/alt-ergo/default.nix @@ -1,12 +1,14 @@ -{ fetchurl, lib, which, ocamlPackages }: +{ fetchFromGitHub, lib, which, ocamlPackages }: let pname = "alt-ergo"; - version = "2.3.3"; + version = "2.4.0"; - src = fetchurl { - url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-${version}/alt-ergo-${version}.tar.gz"; - sha256 = "124k2a4ikk4wdpmvgjpgl97x9skvr9qznk8m68dzsynzpv6yksaj"; + src = fetchFromGitHub { + owner = "OCamlPro"; + repo = pname; + rev = version; + sha256 = "1jm1yrvsg8iyfp9bb728zdx2i7yb6z7minjrfs27k5ncjqkjm65g"; }; useDune2 = true; @@ -19,6 +21,7 @@ let alt-ergo-lib = ocamlPackages.buildDunePackage rec { pname = "alt-ergo-lib"; inherit version src useDune2 nativeBuildInputs; configureFlags = pname; + buildInputs = with ocamlPackages; [ dune-configurator ]; propagatedBuildInputs = with ocamlPackages; [ num ocplib-simplex stdlib-shims zarith ]; }; in @@ -36,7 +39,9 @@ ocamlPackages.buildDunePackage { configureFlags = pname; - buildInputs = [ alt-ergo-parsers ocamlPackages.menhir ]; + buildInputs = [ alt-ergo-parsers ] ++ (with ocamlPackages; [ + cmdliner menhir ]) + ; meta = { description = "High-performance theorem prover and SMT solver"; diff --git a/pkgs/applications/video/streamlink/default.nix b/pkgs/applications/video/streamlink/default.nix index 97607f939fdd..94bd0877a7d1 100644 --- a/pkgs/applications/video/streamlink/default.nix +++ b/pkgs/applications/video/streamlink/default.nix @@ -1,30 +1,29 @@ { lib -, pythonPackages +, python3 , fetchFromGitHub , rtmpdump -, ffmpeg_3 +, ffmpeg }: -pythonPackages.buildPythonApplication rec { +python3.pkgs.buildPythonApplication rec { pname = "streamlink"; - version = "2.0.0"; - disabled = pythonPackages.pythonOlder "3.5.0"; + version = "2.1.1"; src = fetchFromGitHub { owner = "streamlink"; repo = "streamlink"; rev = version; - sha256 = "+W9Nu5Ze08r7IlUZOkkVOz582E1Bbj0a3qIQHwxSmj8="; + sha256 = "14vqh4pck3q766qln7c57n9bz8zrlgfqrpkdn8x0ac9zhlhfn1zm"; }; - checkInputs = with pythonPackages; [ - pytest + checkInputs = with python3.pkgs; [ + pytestCheckHook mock requests-mock freezegun ]; - propagatedBuildInputs = (with pythonPackages; [ + propagatedBuildInputs = (with python3.pkgs; [ pycryptodome requests iso-639 @@ -33,7 +32,11 @@ pythonPackages.buildPythonApplication rec { isodate ]) ++ [ rtmpdump - ffmpeg_3 + ffmpeg + ]; + + disabledTests = [ + "test_plugin_not_in_removed_list" ]; meta = with lib; { diff --git a/pkgs/data/themes/qogir/default.nix b/pkgs/data/themes/qogir/default.nix index 3f87473a4a15..a1011fa0a159 100644 --- a/pkgs/data/themes/qogir/default.nix +++ b/pkgs/data/themes/qogir/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "qogir-theme"; - version = "2021-02-09"; + version = "2021-04-20"; src = fetchFromGitHub { owner = "vinceliuice"; repo = pname; rev = version; - sha256 = "1pilq939bqzxysw4ixd279c49bp7l74bykpprrhgc5f2klpjg1zn"; + sha256 = "17ajrg5safnb6b1jbwvnysc4rvl6gkpnqdf89bammlrpkj6fr3ip"; }; buildInputs = [ gdk-pixbuf librsvg ]; diff --git a/pkgs/development/libraries/ffmpegthumbnailer/default.nix b/pkgs/development/libraries/ffmpegthumbnailer/default.nix index 2e68dbb1d120..dfdbf8eb2f80 100644 --- a/pkgs/development/libraries/ffmpegthumbnailer/default.nix +++ b/pkgs/development/libraries/ffmpegthumbnailer/default.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, lib, stdenv, ffmpeg_3, cmake, libpng, pkg-config, libjpeg +{ fetchFromGitHub, lib, stdenv, ffmpeg, cmake, libpng, pkg-config, libjpeg }: stdenv.mkDerivation rec { @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake pkg-config ]; - buildInputs = [ ffmpeg_3 libpng libjpeg ]; + buildInputs = [ ffmpeg libpng libjpeg ]; cmakeFlags = [ "-DENABLE_THUMBNAILER=ON" ]; meta = with lib; { diff --git a/pkgs/development/ocaml-modules/h2/default.nix b/pkgs/development/ocaml-modules/h2/default.nix new file mode 100644 index 000000000000..dd96e0ecc441 --- /dev/null +++ b/pkgs/development/ocaml-modules/h2/default.nix @@ -0,0 +1,59 @@ +{ buildDunePackage +, lib +, fetchFromGitHub +, ocaml +, hpack +, angstrom +, faraday +, base64 +, psq +, httpaf +, alcotest +, yojson +, hex +}: + +let + http2-frame-test-case = fetchFromGitHub { + owner = "http2jp"; + repo = "http2-frame-test-case"; + rev = "5c67db0d4d68e1fb7d3a241d6e01fc04d981f465"; + sha256 = "16yyb37f8mk9saw7ndjs5is67yq7qa6b6y7k0c75ibxi4n9aw1r3"; + }; +in + +buildDunePackage rec { + pname = "h2"; + + inherit (hpack) + version + src + useDune2 + ; + + minimumOCamlVersion = "4.06"; + + propagatedBuildInputs = [ + angstrom + faraday + base64 + psq + hpack + httpaf + ]; + + # Tests fail with 4.06 + doCheck = lib.versionAtLeast ocaml.version "4.07"; + preCheck = '' + ln -s "${http2-frame-test-case}" lib_test/http2-frame-test-case + ''; + checkInputs = [ + alcotest + yojson + hex + ]; + + meta = hpack.meta // { + description = "A high-performance, memory-efficient, and scalable HTTP/2 library for OCaml"; + }; +} diff --git a/pkgs/development/ocaml-modules/hpack/default.nix b/pkgs/development/ocaml-modules/hpack/default.nix new file mode 100644 index 000000000000..ec967312b874 --- /dev/null +++ b/pkgs/development/ocaml-modules/hpack/default.nix @@ -0,0 +1,37 @@ +{ buildDunePackage +, lib +, fetchurl +, angstrom +, faraday +}: + +buildDunePackage rec { + pname = "hpack"; + version = "0.8.0"; + + src = fetchurl { + url = "https://github.com/anmonteiro/ocaml-h2/releases/download/${version}/h2-${version}.tbz"; + sha256 = "0qcn3yvyz0h419fjg9nb20csfmwmh3ihz0zb0jfzdycf5w4mlry6"; + }; + + useDune2 = true; + minimumOCamlVersion = "4.04"; + + propagatedBuildInputs = [ + angstrom + faraday + ]; + + # circular dependency + doCheck = false; + + meta = { + license = lib.licenses.bsd3; + description = "An HPACK (Header Compression for HTTP/2) implementation in OCaml"; + homepage = "https://github.com/anmonteiro/ocaml-h2"; + maintainers = with lib.maintainers; [ + sternenseemann + anmonteiro + ]; + }; +} diff --git a/pkgs/os-specific/linux/kernel/linux-lqx.nix b/pkgs/os-specific/linux/kernel/linux-lqx.nix index 8662fbbd18bc..8d0333e8fd6c 100644 --- a/pkgs/os-specific/linux/kernel/linux-lqx.nix +++ b/pkgs/os-specific/linux/kernel/linux-lqx.nix @@ -1,7 +1,7 @@ { lib, fetchFromGitHub, buildLinux, linux_zen, ... } @ args: let - version = "5.11.15"; + version = "5.11.16"; suffix = "lqx1"; in @@ -14,7 +14,7 @@ buildLinux (args // { owner = "zen-kernel"; repo = "zen-kernel"; rev = "v${version}-${suffix}"; - sha256 = "1dwibknj4q8cd3mim679mrb4j8yi7p4q9qjcb4rwvw0yzgxmz3lv"; + sha256 = "1j25r45arikjwyhbr72r1935pr7a8g2j6vshggywdiixvizvrx9b"; }; extraMeta = { diff --git a/pkgs/os-specific/linux/kernel/linux-zen.nix b/pkgs/os-specific/linux/kernel/linux-zen.nix index 92aaa9574580..b28400819d53 100644 --- a/pkgs/os-specific/linux/kernel/linux-zen.nix +++ b/pkgs/os-specific/linux/kernel/linux-zen.nix @@ -1,7 +1,7 @@ { lib, fetchFromGitHub, buildLinux, ... } @ args: let - version = "5.11.15"; + version = "5.11.16"; suffix = "zen1"; in @@ -14,7 +14,7 @@ buildLinux (args // { owner = "zen-kernel"; repo = "zen-kernel"; rev = "v${version}-${suffix}"; - sha256 = "0n9wm0lpwkqd79112k03lxp4hc898nvs2jjw3hxzggn5wk4i2dz9"; + sha256 = "0jyicnpqccn194jrm1mc4zq0cil7ls9l57ws3nv783vlk7b0k3gv"; }; extraMeta = { diff --git a/pkgs/os-specific/linux/usbip/default.nix b/pkgs/os-specific/linux/usbip/default.nix index d98559c46001..43c22a8fd12a 100644 --- a/pkgs/os-specific/linux/usbip/default.nix +++ b/pkgs/os-specific/linux/usbip/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation { meta = with lib; { homepage = "https://github.com/torvalds/linux/tree/master/tools/usb/usbip"; description = "allows to pass USB device from server to client over the network"; - license = licenses.gpl2; + license = with licenses; [ gpl2Only gpl2Plus ]; platforms = platforms.linux; broken = kernelOlder "4.10"; }; diff --git a/pkgs/servers/simple-http-server/default.nix b/pkgs/servers/simple-http-server/default.nix new file mode 100644 index 000000000000..d93b4664019e --- /dev/null +++ b/pkgs/servers/simple-http-server/default.nix @@ -0,0 +1,29 @@ +{ lib, rustPlatform, fetchFromGitHub, pkg-config, openssl }: + +rustPlatform.buildRustPackage rec { + pname = "simple-http-server"; + version = "0.6.1"; + + src = fetchFromGitHub { + owner = "TheWaWaR"; + repo = pname; + rev = "v${version}"; + sha256 = "01a129i1ph3m8k6zkdcqnnkqbhlqpk7qvvdsz2i2kas54csbgsww"; + }; + + cargoSha256 = "050avk6wff8v1dlsfvxwvldmmgfakdxmhglv2bhvc2f3q8cf1d5d"; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ openssl ]; + + # Currently no tests are implemented, so we avoid building the package twice + doCheck = false; + + meta = with lib; { + description = "Simple HTTP server in Rust"; + homepage = "https://github.com/TheWaWaR/simple-http-server"; + license = licenses.mit; + maintainers = with maintainers; [ mephistophiles ]; + }; +} diff --git a/pkgs/shells/fish/plugins/default.nix b/pkgs/shells/fish/plugins/default.nix index c886173096e1..42252ccbe38c 100644 --- a/pkgs/shells/fish/plugins/default.nix +++ b/pkgs/shells/fish/plugins/default.nix @@ -15,6 +15,8 @@ lib.makeScope newScope (self: with self; { foreign-env = callPackage ./foreign-env { }; + forgit-fish = callPackage ./forgit.nix { }; + fzf-fish = callPackage ./fzf-fish.nix { }; pure = callPackage ./pure.nix { }; diff --git a/pkgs/shells/fish/plugins/forgit.nix b/pkgs/shells/fish/plugins/forgit.nix new file mode 100644 index 000000000000..b905b7a25895 --- /dev/null +++ b/pkgs/shells/fish/plugins/forgit.nix @@ -0,0 +1,22 @@ +{ lib, buildFishPlugin, fetchFromGitHub, git, fzf }: + +buildFishPlugin rec { + pname = "forgit"; + version = "unstable-2021-04-09"; + + buildInputs = [ git fzf ]; + + src = fetchFromGitHub { + owner = "wfxr"; + repo = "forgit"; + rev = "7806fc3ab37ac479c315eb54b164f67ba9ed17ea"; + sha256 = "sha256-a7wjuqXe3+y5zlgSLk5J31WoORbieFimvtr0FQHRY5M="; + }; + + meta = with lib; { + description = "A utility tool powered by fzf for using git interactively."; + homepage = "https://github.com/wfxr/forgit"; + license = licenses.mit; + maintainers = with maintainers; [ happysalada ]; + }; +} diff --git a/pkgs/tools/misc/castty/default.nix b/pkgs/tools/misc/castty/default.nix new file mode 100644 index 000000000000..ddda737c8b5b --- /dev/null +++ b/pkgs/tools/misc/castty/default.nix @@ -0,0 +1,25 @@ +{ stdenv, lib, fetchFromGitHub, libsoundio, lame }: + +stdenv.mkDerivation { + pname = "castty"; + version = "unstable-2020-11-10"; + + src = fetchFromGitHub { + owner = "dhobsd"; + repo = "castty"; + rev = "333a2bafd96d56cd0bb91577ae5ba0f7d81b3d99"; + sha256 = "0p84ivwsp8ds4drn0hx2ax04gp0xyq6blj1iqfsmrs4slrajdmqs"; + }; + + buildInputs = [ libsoundio lame ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + meta = with lib; { + description = "CLI tool to record audio-enabled screencasts of your terminal, for the web"; + homepage = "https://github.com/dhobsd/castty"; + license = licenses.bsd3; + maintainers = with maintainers; [ iblech ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix index 5db1f1d20e76..7323d092472f 100644 --- a/pkgs/tools/security/grype/default.nix +++ b/pkgs/tools/security/grype/default.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "grype"; - version = "0.10.2"; + version = "0.11.0"; src = fetchFromGitHub { owner = "anchore"; repo = pname; rev = "v${version}"; - sha256 = "sha256-kKzrV2TTO8NmB3x27ZStMZpSIRGwm5Ev+cPGwT50FEU="; + sha256 = "sha256-E1tJ9hEJ4GaL+S4dz6aGq3nJPpdtx0/Tfb1RzgJSe8M="; }; - vendorSha256 = "sha256-PC2n6+gPDxpG8RTAmCfK4P40yfxqlleYI6Ex4FtPjk4="; + vendorSha256 = "sha256-LUyrX/rm01tCPT6Ua6hphhf+4ycNn4tLONRyH3iTrZ4="; propagatedBuildInputs = [ docker ]; diff --git a/pkgs/tools/security/nsjail/001-fix-bison-link-error.patch b/pkgs/tools/security/nsjail/001-fix-bison-link-error.patch new file mode 100644 index 000000000000..427cea5b02b6 --- /dev/null +++ b/pkgs/tools/security/nsjail/001-fix-bison-link-error.patch @@ -0,0 +1,30 @@ +From 8e309a0af0851ab54ca7c6d51b6f3d19ee42c8ee Mon Sep 17 00:00:00 2001 +From: Evangelos Foutras +Date: Wed, 17 Mar 2021 16:36:40 +0200 +Subject: [PATCH] Replace YYUSE call with void cast in src/parser.y + +The YYUSE macro was renamed to YY_USE in bison 3.7.5; we might as well +avoid using it altogether and cast the unused variable to void instead. + +Fixes the following linker error: + +/usr/bin/ld: kafel/libkafel.a(libkafel.o): in function `kafel_yyerror': +arm_syscalls.c:(.text+0x6984): undefined reference to `YYUSE' +--- + src/parser.y | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/parser.y b/src/parser.y +index e0f109c..0e01373 100644 +--- a/kafel/src/parser.y ++++ b/kafel/src/parser.y +@@ -420,8 +420,8 @@ const_def + + void yyerror(YYLTYPE * loc, struct kafel_ctxt* ctxt, yyscan_t scanner, + const char *msg) { ++ (void)scanner; /* suppress unused-parameter warning */ + if (!ctxt->lexical_error) { +- YYUSE(scanner); + if (loc->filename != NULL) { + append_error(ctxt, "%s:%d:%d: %s", loc->filename, loc->first_line, loc->first_column, msg); + } else { diff --git a/pkgs/tools/security/nsjail/default.nix b/pkgs/tools/security/nsjail/default.nix index d48564ce95b0..568113368a08 100644 --- a/pkgs/tools/security/nsjail/default.nix +++ b/pkgs/tools/security/nsjail/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { pname = "nsjail"; - version = "3.0"; + version = "3.0"; # Bumping? Remove the bison patch. src = fetchFromGitHub { owner = "google"; @@ -18,6 +18,11 @@ stdenv.mkDerivation rec { buildInputs = [ libnl protobuf protobufc ]; enableParallelBuilding = true; + patches = [ + # To remove after bumping 3.0 + ./001-fix-bison-link-error.patch + ]; + preBuild = '' makeFlagsArray+=(USER_DEFINES='-DNEWUIDMAP_PATH=${shadow}/bin/newuidmap -DNEWGIDMAP_PATH=${shadow}/bin/newgidmap') ''; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index aba778bfa6bc..fcfa0b51d852 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1235,6 +1235,8 @@ in inherit (nodePackages) castnow; + castty = callPackage ../tools/misc/castty { }; + certigo = callPackage ../tools/admin/certigo { }; catcli = python3Packages.callPackage ../tools/filesystems/catcli { }; @@ -7166,6 +7168,8 @@ in openbazaar = callPackage ../applications/networking/openbazaar { }; openbazaar-client = callPackage ../applications/networking/openbazaar/client.nix { }; + openboard = libsForQt5.callPackage ../applications/graphics/openboard { }; + opencc = callPackage ../tools/text/opencc { }; opencl-info = callPackage ../tools/system/opencl-info { }; @@ -17627,7 +17631,7 @@ in stlport = callPackage ../development/libraries/stlport { }; - streamlink = callPackage ../applications/video/streamlink { pythonPackages = python3Packages; }; + streamlink = callPackage ../applications/video/streamlink { }; streamlink-twitch-gui-bin = callPackage ../applications/video/streamlink-twitch-gui/bin.nix {}; sub-batch = callPackage ../applications/video/sub-batch { }; @@ -24657,6 +24661,8 @@ in motif = callPackage ../development/libraries/motif { }; + mousai = callPackage ../applications/audio/mousai { }; + mozjpeg = callPackage ../applications/graphics/mozjpeg { }; easytag = callPackage ../applications/audio/easytag { }; @@ -31015,6 +31021,8 @@ in simplehttp2server = callPackage ../servers/simplehttp2server { }; + simple-http-server = callPackage ../servers/simple-http-server { }; + diceware = with python3Packages; toPythonApplication diceware; xml2rfc = with python3Packages; toPythonApplication xml2rfc; diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index c7891a1821e8..56d992a92637 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -401,6 +401,8 @@ let inherit (pkgs) gsl; }; + h2 = callPackage ../development/ocaml-modules/h2 { }; + hacl_x25519 = callPackage ../development/ocaml-modules/hacl_x25519 { }; herelib = callPackage ../development/ocaml-modules/herelib { }; @@ -413,6 +415,8 @@ let hmap = callPackage ../development/ocaml-modules/hmap { }; + hpack = callPackage ../development/ocaml-modules/hpack { }; + hxd = callPackage ../development/ocaml-modules/hxd { }; imagelib = callPackage ../development/ocaml-modules/imagelib { };