diff options
author | Vincent Ambo <tazjin@google.com> | 2019-12-09T02·52+0000 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2019-12-09T02·55+0000 |
commit | 39ba7616634522a0495f42034240ff9d114b45a0 (patch) | |
tree | 6cac8e4e06d66757b7989cc0cd8545b257aa469f /third_party | |
parent | 77c64ed8f6a9dfae38b73409ad06d5317c671a29 (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.nix | 49 |
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; +} |