about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-12-09T10·58+0000
committerVincent Ambo <tazjin@google.com>2019-12-09T10·58+0000
commite9431682b2da6fc5085961e42b654bb8b833b879 (patch)
treea5cbac7bffbbc5a777b4a2dd9eb895cf76ac94a3
parenta1ac598fa0782e22c9fb9c27719a50e543757f41 (diff)
refactor: Move CI setup to separate Nix file r/111
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.
-rw-r--r--.travis.yml4
-rw-r--r--ci-builds.nix17
-rw-r--r--default.nix22
-rw-r--r--read-tree.nix4
4 files changed, 21 insertions, 26 deletions
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 '<nixpkgs>' -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: