summary refs log tree commit diff
path: root/pkgs/top-level/stage.nix
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2018-12-04 21:17:22 -0600
committerMatthew Bauer <mjbauer95@gmail.com>2018-12-04 21:56:03 -0600
commit6d90a8b8948185a3118faf183f29f4b8de294675 (patch)
tree06d034804c746bd863638cdeb08b63cc75cfb92d /pkgs/top-level/stage.nix
parent53a67891ab1fefd3aceed07f173cdd33f549fc70 (diff)
downloadnixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.tar
nixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.tar.gz
nixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.tar.bz2
nixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.tar.lz
nixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.tar.xz
nixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.tar.zst
nixpkgs-6d90a8b8948185a3118faf183f29f4b8de294675.zip
top-level/stage.nix: add static overlay
Adds the static overlay that can be used to build Nixpkgs statically.
Can be used like:

  nix build pkgsStatic.hello

Not all packages build, as some rely on dynamic linking.
Diffstat (limited to 'pkgs/top-level/stage.nix')
-rw-r--r--pkgs/top-level/stage.nix16
1 files changed, 16 insertions, 0 deletions
diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix
index 276350e56e6..6ca370e0b9b 100644
--- a/pkgs/top-level/stage.nix
+++ b/pkgs/top-level/stage.nix
@@ -174,6 +174,22 @@ let
     # Prefer appendOverlays if used repeatedly.
     extend = f: self.appendOverlays [f];
 
+    # Fully static packages.
+    # Currently uses Musl on Linux (couldn’t get static glibc to work).
+    pkgsStatic = nixpkgsFun ({
+      crossOverlays = [ (import ./static.nix) ];
+    } // lib.optionalAttrs stdenv.hostPlatform.isLinux {
+      crossSystem = {
+        parsed = stdenv.hostPlatform.parsed // {
+          abi = {
+            "gnu" = lib.systems.parse.abis.musl;
+            "gnueabi" = lib.systems.parse.abis.musleabi;
+            "gnueabihf" = lib.systems.parse.abis.musleabihf;
+          }.${stdenv.hostPlatform.parsed.abi.name}
+            or lib.systems.parse.abis.musl;
+        };
+      };
+    });
   };
 
   # The complete chain of package set builders, applied from top to bottom.