39ba761663
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!
49 lines
1.3 KiB
Nix
49 lines
1.3 KiB
Nix
# 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;
|
|
}
|