about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-03-01T22·16+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-03-01T22·32+0000
commit42c6ad3bb4ffb8dd70fcd172fa0132644923e141 (patch)
tree4c647013abb62160bfb4f384580ac3911119463a
parentb4689761d9ca284a3f6f3b6c096eb37d5b96fec6 (diff)
Simpify top-level nix expression
When I first created the monorepo, I borrowed @tazjin's monorepo's. I adapted
his depot/default.nix, replacing some of his paths with my paths. This worked
for me until recently.

I attemped to include <briefcase/monzo_ynab/job> as a systemd unit for my NixOS
machine, socrates. NixOS failed to build my changes, and I didn't fully
understand my default.nix since I borrowed most of it from @tazjin. I spent the
past week looking at the `fix` function. I realized that I didn't fully
understand how fixed-point recursion worked. This sent me down a rabbit hole
terminating with me studying the Y and Z combinators.

Ironically, after understanding the `fix` function, I realized that I didn't
need to use it where I was consuming it. I ended up pruning most of my
configuration, which resulted in this commit.

Yours truly,
lambda f: (lambda x: f(x(x)))(lambda x: f(x(x)))
-rw-r--r--default.nix45
1 files changed, 12 insertions, 33 deletions
diff --git a/default.nix b/default.nix
index 861ae6beee6f..36dba2915b4a 100644
--- a/default.nix
+++ b/default.nix
@@ -1,38 +1,17 @@
-# At the time of this writing, this configuration was taken from @tazjin's
-# default.nix from his depot. I've added, changed, and removed that parts that I
-# don't need, and this is what remains.
-{ ... }@args:
-
-with builtins;
+{ ... }:
 
 let
-  fix = f: let x = f x; in x;
-
-  # Global configuration that all packages are called with.
-  config = self: {
-    inherit self;
-    pkgs = import <nixpkgs> {};
-    depot = import <depot> {};
+  readTree = import <depot/nix/readTree> {} {
+    pkgs      = import <nixpkgs> {};
+    depot     = import <depot> {};
     briefcase = import <briefcase> {};
   };
-
-  readTree' = import <depot/nix/readTree> {};
-
-  # TODO: Find a better way to expose entire monorepo without introducing
-  # "infinite recursion".
-  localPkgs = readTree: {
-    nixos = readTree ./nixos;
-    blog = readTree ./blog;
-    lisp = readTree ./lisp;
-    gopkgs = readTree ./gopkgs;
-    monzo_ynab = readTree ./monzo_ynab;
-    third_party = readTree ./third_party;
-    tools = readTree ./tools;
-  };
-in fix(self: {
-  config = config self;
+in {
+  nixos       = readTree ./nixos;
+  blog        = readTree ./blog;
+  lisp        = readTree ./lisp;
+  gopkgs      = readTree ./gopkgs;
+  monzo_ynab  = readTree ./monzo_ynab;
+  third_party = readTree ./third_party;
+  tools       = readTree ./tools;
 }
-
-# Add local packages as structured by readTree
-// (localPkgs (readTree' (self.config // { inherit (self) lib; })))
-)