tvl-depot/default.nix
Vincent Ambo 3a79e8b932 refactor(build): Add ciProjects attribute for CI builds
This attribute contains a list of all derivations that should be built
by the CI for this repository.

This includes all of my own packages that are not marked as broken, as
well as select third-party packages.
2019-09-22 17:19:13 +01:00

93 lines
3.3 KiB
Nix

# This file sets up the top-level package set by merging all local packages into
# the nixpkgs top-level.
#
# This makes packages accessible via the Nixery instance that is configured to
# use this repository as its nixpkgs source.
with builtins;
let
# The pinned commit here is identical to the public nixery.dev
# version, since popularity data has been generated for that.
stableCommit = "5271f8dddc0f2e54f55bd2fc1868c09ff72ac980";
stableSrc = fetchTarball {
url = "https://github.com/NixOS/nixpkgs-channels/archive/${stableCommit}.tar.gz";
sha256 = "0w0x7whwb98lalaw25hxarmr924m1i49c1kacyypmnh2vjbkrjmi";
};
unstableCommit = "765a71f15025ce78024bae3dc4a92bd2be3a8fbf";
unstableSrc = fetchTarball {
url = "https://github.com/NixOS/nixpkgs-channels/archive/${unstableCommit}.tar.gz";
sha256 = "0j1wghr9dj9njn3x9xi0wzjk1107gi2pxb0w2dk8g0djmhnlx71q";
};
unstable = import unstableSrc {};
localPkgs = self: super: {
# Local projects should be added here:
tazjin = {
blog = self.callPackage ./services/tazblog {};
blog_cli = self.callPackage ./tools/blog_cli {};
gemma = self.callPackage ./services/gemma {};
kms_pass = self.callPackage ./tools/kms_pass {
project = "tazjins-infrastructure";
region = "europe-north1";
keyring = "tazjins-keys";
key = "kontemplate-key";
};
};
# Third-party projects (either vendored or modified from nixpkgs) go here:
nixery = import ./third_party/nixery.nix { pkgs = self; };
terraform-gcp = unstable.terraform_0_12.withPlugins(p: [ p.google p.google-beta ]);
ormolu = import (self.fetchFromGitHub {
owner = "tweag";
repo = "ormolu";
rev = "a7076c0f83e5c06ea9067b71171859fa2ba8afd9";
sha256 = "1p4n2ja4ciw3qfskn65ggpy37mvgf2sslxqmqn8s8jjarnqcyfny";
}) { pkgs = self; };
# Gemma needs an older version of Elm to be built. Updating it to
# the newer version is a lot of effort.
elmPackages = (import (self.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "14f9ee66e63077539252f8b4550049381a082518";
sha256 = "1wn7nmb1cqfk2j91l3rwc6yhimfkzxprb8wknw5wi57yhq9m6lv1";
}) {}).elmPackages;
# Wrap kontemplate to inject the Cloud KMS version of 'pass'
kontemplate =
let master = super.kontemplate.overrideAttrs(_: {
src = self.fetchFromGitHub {
owner = "tazjin";
repo = "kontemplate";
rev = "v1.8.0";
sha256 = "123mjmmm4hynraq1fpn3j5i0a1i87l265kkjraxxxbl0zacv74i1";
};
});
in self.writeShellScriptBin "kontemplate" ''
export PATH="${self.tazjin.kms_pass}/bin:$PATH"
exec ${master}/bin/kontemplate $@
'';
# One of Gemma's dependencies is missing in nixpkgs' Quicklisp
# package set, it is overlaid locally here.
lispPackages = import ./third_party/common_lisp/quicklisp.nix {
inherit (self) lib;
inherit (super) lispPackages;
};
# All projects that should be built by CI should be added here:
ciProjects = [
self.kontemplate
self.nixery
self.ormolu
self.terraform-gcp
] ++ filter (d: d ? meta.broken && !d.meta.broken) (attrValues self.tazjin);
};
in { ... } @ args: import stableSrc (args // {
overlays = [ localPkgs ];
config.allowUnfree = true;
})