about summary refs log tree commit diff
path: root/third_party
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-12-09T02·52+0000
committerVincent Ambo <tazjin@google.com>2019-12-09T02·55+0000
commit39ba7616634522a0495f42034240ff9d114b45a0 (patch)
tree6cac8e4e06d66757b7989cc0cd8545b257aa469f /third_party
parent77c64ed8f6a9dfae38b73409ad06d5317c671a29 (diff)
feat(third_party): Explicitly expose packages from nixpkgs r/102
Instead of exposing the entire package tree from nixpkgs, whitelist
individual packages explicitly so that they show up in
`pkgs.third_party`.

This makes it much easier to control external dependencies used by my
projects.

Bonus: It even includes a working `third_party.callPackage` with only
the whitelisted packages!
Diffstat (limited to 'third_party')
-rw-r--r--third_party/default.nix49
1 files changed, 49 insertions, 0 deletions
diff --git a/third_party/default.nix b/third_party/default.nix
new file mode 100644
index 000000000000..075a4314ef23
--- /dev/null
+++ b/third_party/default.nix
@@ -0,0 +1,49 @@
+# This file controls the import of external dependencies (i.e.
+# third-party code) into my package tree.
+#
+# This includes *all packages needed from nixpkgs*.
+
+{ pkgs, ... }:
+let
+  # The pinned commit here is identical to the public nixery.dev
+  # version, since popularity data has been generated for that.
+  stableCommit = "80b42e630b23052d9525840a9742100a2ceaaa8f";
+  stableSrc = fetchTarball {
+    url = "https://github.com/NixOS/nixpkgs-channels/archive/${stableCommit}.tar.gz";
+    sha256 = "0243qiivxl3z51biy4f5y5cy81x5bki5dazl9wqwgnmd373gpmxy";
+  };
+  nixpkgs = import stableSrc {
+    config.allowUnfree = true;
+    config.allowBroken = true;
+  };
+
+  exposed = {
+    # Inherit the packages from nixpkgs that should be available inside
+    # of the repo. They become available under `pkgs.third_party.<name>`
+    inherit (nixpkgs)
+      buildGoPackage
+      cargo
+      darwin
+      fetchFromGitHub
+      google-cloud-sdk
+      haskell
+      jq
+      lib
+      llvmPackages
+      remarshal
+      rsync
+      runCommand
+      rustc
+      stdenv
+      symlinkJoin
+      tree
+      writeShellScriptBin
+      writeText;
+  };
+
+in exposed // {
+  callPackage = nixpkgs.lib.callPackageWith exposed;
+  # Provide the source code of nixpkgs, but do not provide an imported
+  # version of it.
+  nixpkgsSrc = stableSrc;
+}