about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Racicot <gracicot42@gmail.com>2023-10-10 16:10:28 -0400
committerGuillaume Racicot <gracicot42@gmail.com>2023-12-07 10:01:01 -0300
commit810da0480b8bf24b1a2f2e0278494cceb5f31964 (patch)
tree70237db23e9cbe18d2d26da0a5895e4385312039
parent673432ef6ea14b51d77a11a3abefdadf7b76668e (diff)
downloadnixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.tar
nixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.tar.gz
nixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.tar.bz2
nixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.tar.lz
nixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.tar.xz
nixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.tar.zst
nixlib-810da0480b8bf24b1a2f2e0278494cceb5f31964.zip
vcpkg: init at 2023.08.09
-rw-r--r--pkgs/by-name/vc/vcpkg/package.nix51
1 files changed, 51 insertions, 0 deletions
diff --git a/pkgs/by-name/vc/vcpkg/package.nix b/pkgs/by-name/vc/vcpkg/package.nix
new file mode 100644
index 000000000000..e8beeb0756a1
--- /dev/null
+++ b/pkgs/by-name/vc/vcpkg/package.nix
@@ -0,0 +1,51 @@
+{ fetchFromGitHub
+, stdenvNoCC
+, lib
+, vcpkg-tool
+, writeShellScript
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "vcpkg";
+  version = "2023.10.19";
+
+  src = fetchFromGitHub {
+    owner = "microsoft";
+    repo = "vcpkg";
+    rev = finalAttrs.version;
+    hash = "sha256-u+4vyOphnowoaZgfkCbzF7Q4tuz2GN1bHylaKw352Lc=";
+  };
+
+  installPhase = let
+    # vcpkg needs two directories to write to that is independent of installation directory.
+    # Since vcpkg already creates $HOME/.vcpkg/ we use that to create a root where vcpkg can write into.
+    vcpkgScript = writeShellScript "vcpkg" ''
+      vcpkg_writable_path="$HOME/.vcpkg/root/"
+
+      VCPKG_ROOT="@out@/share/vcpkg" ${vcpkg-tool}/bin/vcpkg \
+        --x-downloads-root="$vcpkg_writable_path"/downloads \
+        --x-buildtrees-root="$vcpkg_writable_path"/buildtrees \
+        --x-packages-root="$vcpkg_writable_path"/packages \
+        "$@"
+      '';
+    in ''
+      runHook preInstall
+
+      mkdir -p $out/bin $out/share/vcpkg/scripts/buildsystems
+      cp --preserve=mode -r ./{docs,ports,triplets,scripts,.vcpkg-root,versions,LICENSE.txt} $out/share/vcpkg/
+      substitute ${vcpkgScript} $out/bin/vcpkg --subst-var-by out $out
+      chmod +x $out/bin/vcpkg
+      ln -s $out/bin/vcpkg $out/share/vcpkg/vcpkg
+      touch $out/share/vcpkg/vcpkg.disable-metrics
+
+      runHook postInstall
+    '';
+
+  meta = {
+    description = "C++ Library Manager";
+    homepage = "https://vcpkg.io/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ guekka gracicot ];
+    platforms = lib.platforms.all;
+  };
+})