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)))
This commit is contained in:
parent
b4689761d9
commit
42c6ad3bb4
1 changed files with 12 additions and 33 deletions
45
default.nix
45
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; })))
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue