From 42c6ad3bb4ffb8dd70fcd172fa0132644923e141 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sun, 1 Mar 2020 22:16:07 +0000 Subject: 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 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))) --- default.nix | 45 ++++++++++++--------------------------------- 1 file 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 {}; - depot = import {}; + readTree = import {} { + pkgs = import {}; + depot = import {}; briefcase = import {}; }; - - readTree' = import {}; - - # 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; }))) -) -- cgit 1.4.1