From 4b00cfe77fe13524e387959579ef14afcfcb22eb Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 20 Nov 2018 20:33:25 -0600 Subject: systems/parse: add older x86 architectures i386, i486, i586 are added. These may have issues as many places assume i686 is the only valid 32 bit x86 architecture. --- lib/systems/parse.nix | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib') diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index be73a6d252f0f..73b065689d06b 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -82,6 +82,9 @@ rec { aarch64 = { bits = 64; significantByte = littleEndian; family = "arm"; version = "8"; }; aarch64_be = { bits = 64; significantByte = bigEndian; family = "arm"; version = "8"; }; + i386 = { bits = 32; significantByte = littleEndian; family = "x86"; }; + i486 = { bits = 32; significantByte = littleEndian; family = "x86"; }; + i586 = { bits = 32; significantByte = littleEndian; family = "x86"; }; i686 = { bits = 32; significantByte = littleEndian; family = "x86"; }; x86_64 = { bits = 64; significantByte = littleEndian; family = "x86"; }; -- cgit 1.4.1 From 3cc83dffca97e1da710ccc90777b3d3961ab3230 Mon Sep 17 00:00:00 2001 From: Eric Wolf Date: Sun, 18 Nov 2018 00:03:32 +0100 Subject: lib/fixed-points.nix: add an example for extends - helped me understand how extends works, hopefully it can help others too --- lib/fixed-points.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib') diff --git a/lib/fixed-points.nix b/lib/fixed-points.nix index 13e053b5aa7db..7169c46fcbbca 100644 --- a/lib/fixed-points.nix +++ b/lib/fixed-points.nix @@ -41,6 +41,18 @@ rec { # think of it as an infix operator `g extends f` that mimics the syntax from # Java. It may seem counter-intuitive to have the "base class" as the second # argument, but it's nice this way if several uses of `extends` are cascaded. + # + # To get a better understanding how `extends` turns a function with a fix + # point (the package set we start with) into a new function with a different fix + # point (the desired packages set) lets just see, how `extends g f` + # unfolds with `g` and `f` defined above: + # + # extends g f = self: let super = f self; in super // g self super; + # = self: let super = { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }; in super // g self super + # = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // g self { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } + # = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // { foo = "foo" + " + "; } + # = self: { foo = "foo + "; bar = "bar"; foobar = self.foo + self.bar; } + # extends = f: rattrs: self: let super = rattrs self; in super // f self super; # Compose two extending functions of the type expected by 'extends' -- cgit 1.4.1