From e9431682b2da6fc5085961e42b654bb8b833b879 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Mon, 9 Dec 2019 10:58:09 +0000 Subject: refactor: Move CI setup to separate Nix file Instead of polluting the repository namespace with the list of CI projects, move that to a separate file. Currently the list of projects to be built by CI is still hardcoded, but this will be fixed soon. --- .travis.yml | 4 +--- ci-builds.nix | 17 +++++++++++++++++ default.nix | 22 ---------------------- read-tree.nix | 4 +++- 4 files changed, 21 insertions(+), 26 deletions(-) create mode 100644 ci-builds.nix diff --git a/.travis.yml b/.travis.yml index 6a47fc1d70..2ab57adb59 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,4 @@ before_script: - nix-env -f '' -iA third_party.cachix - cachix use tazjin script: - # All of my own tools are under the top-level 'tazjin' attribute - # set, this command will build all of them. - - nix-build -A ciProjects | cachix push tazjin + - nix-build ci-builds.nix | cachix push tazjin diff --git a/ci-builds.nix b/ci-builds.nix new file mode 100644 index 0000000000..916317ea56 --- /dev/null +++ b/ci-builds.nix @@ -0,0 +1,17 @@ +# This file is invoked by the CI build and recursively filters the +# package set for attributes that should be built automatically. +# +# Packages can be opted-in to being built by CI by setting +# `meta.enableCI = true`. +# +# TODO(tazjin): Actually implement the above. + +let + pkgs = import ./default.nix; +in with pkgs; [ + services.tazblog + services.nixcon-demo + tools.kms_pass + tools.blog_cli +] + diff --git a/default.nix b/default.nix index 6652d7834d..f69c96ab4c 100644 --- a/default.nix +++ b/default.nix @@ -12,15 +12,6 @@ let # package set is not available here. fix = f: let x = f x; in x; - # Derivations that have `meta.enableCI` set to `true` should be - # built by the CI system on every commit. This code implements - # filtering of all derivations in the local sets against this - # condition. - filterCI = lib: pkgs: let - inherit (lib) collect isDerivation filterAttrsRecursive; - ciCondition = _: x: (!isDerivation x) || ((x ? meta.enableCI) && (x.meta.enableCI)); - in collect isDerivation (filterAttrsRecursive ciCondition pkgs); - # Global configuration that all packages are called with. config = pkgs: { inherit pkgs; @@ -45,19 +36,6 @@ in fix(self: { # Elevate 'lib' from nixpkgs lib = import (self.third_party.nixpkgsSrc + "/lib"); - - # Collect all projects that should be built by CI - # ciProjects = (filterCI self.lib self.services) - # ++ (filterCI super.lib self.tools) - # ++ (filterCI super.lib self.third_party); - # TODO(tazjin): re-enable automatic filtering for this, requires - # read-tree fixes - ciProjects = with self; [ - services.tazblog - services.nixcon-demo - tools.kms_pass - tools.blog_cli - ]; } # Add local packages as structured by readTree diff --git a/read-tree.nix b/read-tree.nix index 2e182dfbde..8aa504efc2 100644 --- a/read-tree.nix +++ b/read-tree.nix @@ -1,5 +1,7 @@ -# TODO(tazjin): if there's a default.nix, keep traversing but don't import .nix files? # TODO(tazjin): avoid {} by only calling functions *after* checking what they are +# TODO(tazjin): add an attribute to derivations that have children to +# indicate that traversal should continue for ... traversal use-cases +# (such as CI package filtering) args: initPath: -- cgit 1.4.1