about summary refs log tree commit diff
path: root/third_party/default.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*.
{ ... }:

let
  # Tracking nixos-20.03 as of 2020-04-04.
  commit = "b0c285807d6a9f1b7562ec417c24fa1a30ecc31a";
  nixpkgsSrc = fetchTarball {
    url = "https://github.com/NixOS/nixpkgs-channels/archive/${commit}.tar.gz";
    sha256 = "0waapr7aqz0h1fy1fqlx981ygllh91qx9sz1l2j2h59s46cdircl";
  };
  nixpkgs = import nixpkgsSrc {
    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)
      age
      autoconf
      bashInteractive
      bat
      buildGoModule
      buildGoPackage
      bzip2
      c-ares
      cacert
      cachix
      cairo
      cargo
      cgit
      clang_9
      cmake
      coreutils
      cudatoolkit
      darwin
      dockerTools
      emacs26
      emacs26-nox
      emacsPackages
      emacsPackagesGen
      fetchFromGitHub
      fetchurl
      fetchzip
      fira
      fira-code
      fira-mono
      fontconfig
      freetype
      gettext
      glibc
      gnutar
      go
      google-cloud-sdk
      graphviz
      grpc
      gzip
      haskell
      iana-etc
      imagemagickBig
      jetbrains-mono
      jq
      kontemplate
      lib
      libredirect
      llvmPackages
      luajit
      luatex
      makeFontsConf
      makeWrapper
      mdbook
      mime-types
      moreutils
      nano
      nginx
      nix
      openssh
      openssl
      overrideCC
      overrideCCC
      pandoc
      parallel
      pkgconfig
      pounce
      protobuf
      python3
      python3Packages
      remarshal
      rink
      ripgrep
      rsync
      runCommand
      runCommandNoCC
      rustPlatform
      rustc
      sbcl
      sqlite
      stdenv
      stern
      symlinkJoin
      systemd
      tdlib
      terraform_0_12
      texlive
      thttpd
      tree
      writeShellScript
      writeShellScriptBin
      writeText
      writeTextFile
      xz
      zlib
      zstd;
  };

in exposed // {
  callPackage = nixpkgs.lib.callPackageWith exposed;

  # Provide the source code of nixpkgs, but do not provide an imported
  # version of it.
  inherit nixpkgsSrc;

  # Packages to be overridden
  originals = {
    inherit (nixpkgs) git notmuch;
    ffmpeg = nixpkgs.ffmpeg-full;
  };

  # Make NixOS available
  nixos = import "${nixpkgsSrc}/nixos";

  # Build a Chromium with VAAPI (hardware-accelerated video decoding)
  # enabled. This is useful for Stadia on desktop.
  chromiumVaapi = nixpkgs.chromium.override {
    useVaapi = true;
  };
}