tvlc is a tool for managing sparse git worktrees of the TVL depot. It is still in development; near-term tasks include a setup script, Nix dependency resolution, worktree removal, and the dispatch script. See cs.tvl.fyi/depot/docs/designs/SPARSE_CHECKOUTS.md for more info. Change-Id: Iad96656f0206178980fe7dcadd3dffe70d690f8f Reviewed-on: https://cl.tvl.fyi/c/depot/+/1760 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
		
			
				
	
	
		
			266 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			266 lines
		
	
	
	
		
			6.2 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*.
 | |
| { ... }:
 | |
| 
 | |
| let
 | |
|   # Tracking nixos-unstable as of 2020-08-16.
 | |
|   nixpkgsCommit = "16fc531784ac226fb268cc59ad573d2746c109c1";
 | |
|   nixpkgsSrc = fetchTarball {
 | |
|     url = "https://github.com/NixOS/nixpkgs-channels/archive/${nixpkgsCommit}.tar.gz";
 | |
|     sha256 = "0qw1jpdfih9y0dycslapzfp8bl4z7vfg9c7qz176wghwybm4sx0a";
 | |
|   };
 | |
|   nixpkgs = import nixpkgsSrc {
 | |
|     config.allowUnfree = true;
 | |
|     config.allowBroken = true;
 | |
| 
 | |
|     # Lutris depends on p7zip, which is considered insecure.
 | |
|     config.permittedInsecurePackages = [
 | |
|       "p7zip-16.02"
 | |
|     ];
 | |
|   };
 | |
| 
 | |
|   # Tracking nixos-20.03 as of 2020-08-04.
 | |
|   stableCommit = "977000f149bd4ddb65bf1af09552898a0f305c72";
 | |
|   stableNixpkgsSrc = fetchTarball {
 | |
|     url = "https://github.com/NixOS/nixpkgs-channels/archive/${stableCommit}.tar.gz";
 | |
|     sha256 = "1ad3bviywxd64g4vwk4ppjkkajd3rfqjhnp6xcz3w0ih0sbn0rh5";
 | |
|   };
 | |
|   stableNixpkgs = import stableNixpkgsSrc {};
 | |
| 
 | |
|   exposed = {
 | |
|     # Inherit the packages from nixos-unstable that should be available inside
 | |
|     # of the repo. They become available under `pkgs.third_party.<name>`
 | |
|     inherit (nixpkgs)
 | |
|       age
 | |
|       autoconf
 | |
|       autoreconfHook
 | |
|       avrdude
 | |
|       avrlibc
 | |
|       awscli
 | |
|       bashInteractive
 | |
|       bat
 | |
|       buildBazelPackage
 | |
|       buildFHSUserEnv
 | |
|       buildGoModule
 | |
|       buildGoPackage
 | |
|       buildPackages
 | |
|       buildkite-agent
 | |
|       busybox
 | |
|       bzip2
 | |
|       c-ares
 | |
|       cacert
 | |
|       cachix
 | |
|       cairo
 | |
|       cargo
 | |
|       cgit
 | |
|       clang-tools
 | |
|       clang_10
 | |
|       cmake
 | |
|       coreutils
 | |
|       cudatoolkit
 | |
|       darwin
 | |
|       dfu-programmer
 | |
|       dfu-util
 | |
|       diffutils
 | |
|       docker-compose
 | |
|       dockerTools
 | |
|       emacs26
 | |
|       emacs26-nox
 | |
|       emacsPackages
 | |
|       emacsPackagesGen
 | |
|       execline
 | |
|       fd
 | |
|       fetchFromGitHub
 | |
|       fetchgit
 | |
|       fetchurl
 | |
|       fetchzip
 | |
|       fira
 | |
|       fira-code
 | |
|       fira-mono
 | |
|       flamegraph
 | |
|       fontconfig
 | |
|       freetype
 | |
|       gettext
 | |
|       glibc
 | |
|       gmock
 | |
|       gnutar
 | |
|       google-cloud-sdk
 | |
|       graphviz
 | |
|       gzip
 | |
|       haskell
 | |
|       iana-etc
 | |
|       imagemagickBig
 | |
|       installShellFiles
 | |
|       jdk
 | |
|       jdk11
 | |
|       jetbrains-mono
 | |
|       jq
 | |
|       kontemplate
 | |
|       lib
 | |
|       libredirect
 | |
|       linuxPackages
 | |
|       luajit
 | |
|       lutris
 | |
|       makeFontsConf
 | |
|       makeWrapper
 | |
|       mdbook
 | |
|       meson
 | |
|       mime-types
 | |
|       mkShell
 | |
|       moreutils
 | |
|       nano
 | |
|       nginx
 | |
|       ninja
 | |
|       nix
 | |
|       openssh
 | |
|       openssl
 | |
|       overrideCC
 | |
|       pandoc
 | |
|       parallel
 | |
|       pkgconfig
 | |
|       pkgsCross
 | |
|       postgresql
 | |
|       pounce
 | |
|       pulseaudio
 | |
|       python3
 | |
|       python3Packages
 | |
|       remarshal
 | |
|       rink
 | |
|       ripgrep
 | |
|       rsync
 | |
|       runCommand
 | |
|       runCommandLocal
 | |
|       runCommandNoCC
 | |
|       rustPlatform
 | |
|       rustc
 | |
|       s6-portable-utils
 | |
|       sbcl
 | |
|       shellcheck
 | |
|       sqlite
 | |
|       stdenvNoCC
 | |
|       stern
 | |
|       symlinkJoin
 | |
|       systemd
 | |
|       tdlib
 | |
|       teensy-loader-cli
 | |
|       terraform_0_12
 | |
|       texlive
 | |
|       thttpd
 | |
|       tree
 | |
|       unzip
 | |
|       which
 | |
|       writeShellScript
 | |
|       writeShellScriptBin
 | |
|       writeText
 | |
|       xorg
 | |
|       xz
 | |
|       zlib
 | |
|       zstd;
 | |
| 
 | |
|     # Required by //third_party/nix
 | |
|     inherit (nixpkgs)
 | |
|       aws-sdk-cpp
 | |
|       bison
 | |
|       boehmgc
 | |
|       boost # urgh
 | |
|       brotli
 | |
|       busybox-sandbox-shell
 | |
|       curl
 | |
|       docbook5
 | |
|       docbook_xsl_ns
 | |
|       editline
 | |
|       flex
 | |
|       libseccomp
 | |
|       libsodium
 | |
|       libxml2
 | |
|       libxslt
 | |
|       mercurial
 | |
|       perl
 | |
|       perlPackages
 | |
|       quassel
 | |
|       utillinuxMinimal;
 | |
| 
 | |
|     haskellPackages = (nixpkgs.haskellPackages.override {
 | |
|       overrides = (import ./haskell_overlay { pkgs = nixpkgs; });
 | |
|     });
 | |
| 
 | |
|     gradle_6 = (nixpkgs.gradleGen.override {
 | |
|       java = nixpkgs.jdk11;
 | |
|       jdk = nixpkgs.jdk11;
 | |
|     }).gradleGen rec {
 | |
|       name = "gradle-6.5.1";
 | |
|       nativeVersion = "0.22-milestone-3";
 | |
| 
 | |
|       src = builtins.fetchurl {
 | |
|         url = "https://services.gradle.org/distributions/${name}-bin.zip";
 | |
|         sha256 = "0jmmipjh4fbsn92zpifa5cqg5ws2a4ha0s4jzqhrg4zs542x79sh";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| 
 | |
| in exposed.lib.fix(self: exposed // {
 | |
|   callPackage = nixpkgs.lib.callPackageWith self;
 | |
| 
 | |
|   # Provide the source code of nixpkgs, but do not provide an imported
 | |
|   # version of it.
 | |
|   inherit nixpkgsCommit nixpkgsSrc stableNixpkgsSrc;
 | |
| 
 | |
|   # Packages to be overridden
 | |
|   originals = {
 | |
|     inherit (nixpkgs) gtest openldap go grpc notmuch rr;
 | |
|     inherit (stableNixpkgs) git;
 | |
|     ffmpeg = nixpkgs.ffmpeg-full;
 | |
|   };
 | |
| 
 | |
|   # Use LLVM 10
 | |
|   llvmPackages = nixpkgs.llvmPackages_10;
 | |
|   clangStdenv = nixpkgs.llvmPackages_10.stdenv;
 | |
|   stdenv = nixpkgs.llvmPackages_10.stdenv;
 | |
| 
 | |
|   # Provide Emacs 27
 | |
|   #
 | |
|   # The assert exists because the name of the attribute is unversioned
 | |
|   # (which is different from previous versions).
 | |
|   emacs27 = assert ((exposed.lib.versions.major nixpkgs.emacs.version) == "27");
 | |
|     nixpkgs.emacs.overrideAttrs(old: {
 | |
|       configureFlags = old.configureFlags ++ [ "--with-cairo" ];
 | |
|     });
 | |
| 
 | |
|   emacs27-nox = assert ((exposed.lib.versions.major nixpkgs.emacs.version) == "27");
 | |
|     nixpkgs.emacs-nox;
 | |
| 
 | |
|   # The Go authors have released a version of Go (in alpha) that has a
 | |
|   # type system. This makes it available, specifically for use with
 | |
|   # //nix/buildTypedGo.
 | |
|   go = nixpkgs.go.overrideAttrs(old: {
 | |
|     version = "dev-go2go";
 | |
|     doCheck = false;
 | |
|     patches = []; # they all don't apply and are mostly about Darwin crap
 | |
| 
 | |
|     src = nixpkgs.fetchgit {
 | |
|       url = "https://go.googlesource.com/go";
 | |
|       # You might think these hashes are trivial to update. It's just
 | |
|       # a branch in a git repository, right?
 | |
|       #
 | |
|       # Well, think again. Somehow I managed to get no fewer than 3
 | |
|       # (!) different commit hashes for the same branch by cloning
 | |
|       # this repository thrice. Only the third one (which you, the
 | |
|       # reader, can find below for your reading pleasure) actually
 | |
|       # gave me `go tool go2go`.
 | |
|       rev = "ad307489d41133f32c779cfa1b0db4a852ace047";
 | |
|       leaveDotGit = true;
 | |
|       sha256 = "1nxmqdlyfx7w3g5vhjfq24yrc9hwpsa2mjv58xrmhh8vvy50ziqq";
 | |
| 
 | |
|       postFetch = ''
 | |
|         cd $out
 | |
|         ${nixpkgs.git}/bin/git log -n 1 "--format=format:devel +%H %cd" HEAD > VERSION
 | |
|         rm -rf .git
 | |
|       '';
 | |
|     };
 | |
|   });
 | |
| 
 | |
|   # Make NixOS available
 | |
|   nixos = import "${nixpkgsSrc}/nixos";
 | |
| })
 |