From 584fab5b00d5d6016ba11a30c8e31a6314a5ce65 Mon Sep 17 00:00:00 2001 From: seth Date: Wed, 30 Aug 2023 13:13:21 -0400 Subject: refactor: don't instantiate nixpkgs https://zimbatm.com/notes/1000-instances-of-nixpkgs --- pkgs/all-packages.nix | 47 ++++++++++++++++++++++++++------------------- pkgs/default.nix | 15 +++------------ templates/basic/default.nix | 25 ++++++++++++++++++++++++ templates/basic/flake.nix | 35 ++++++++------------------------- 4 files changed, 63 insertions(+), 59 deletions(-) create mode 100644 templates/basic/default.nix diff --git a/pkgs/all-packages.nix b/pkgs/all-packages.nix index 6a8f12e..a8b5445 100644 --- a/pkgs/all-packages.nix +++ b/pkgs/all-packages.nix @@ -1,21 +1,28 @@ -pkgs: let - inherit (pkgs) callPackage; -in { - # original packages - cfspeedtest = callPackage ./cfspeedtest.nix {}; - check-pr = callPackage ./check-pr.nix {}; - fastfetch = callPackage ./fastfetch.nix {}; - huion = callPackage ./huion.nix {}; - klassy = pkgs.libsForQt5.callPackage ./klassy.nix {}; - mommy = callPackage ./mommy.nix {}; - nixgc = callPackage ./nixgc.nix {}; - modrinth-app-unwrapped = callPackage ./modrinth-app { - inherit (pkgs.nodePackages) pnpm; - inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices Security WebKit; +{ + final ? {}, + prev, +}: let + inherit (prev) callPackage; + callPackage' = + final.callPackage or prev.lib.callPackageWith (prev // packages); + + packages = { + cfspeedtest = callPackage ./cfspeedtest.nix {}; + check-pr = callPackage ./check-pr.nix {}; + fastfetch = callPackage ./fastfetch.nix {}; + huion = callPackage ./huion.nix {}; + klassy = prev.libsForQt5.callPackage ./klassy.nix {}; + mommy = callPackage ./mommy.nix {}; + nixgc = callPackage ./nixgc.nix {}; + modrinth-app-unwrapped = callPackage ./modrinth-app { + inherit (prev.nodePackages) pnpm; + inherit (prev.darwin.apple_sdk.frameworks) CoreServices Security WebKit; + }; + modrinth-app = callPackage' ./modrinth-app/wrapper.nix {}; + treefetch = callPackage ./treefetch.nix {}; + swhkd = callPackage ./swhkd {}; + vim-just = callPackage ./vim-just.nix {}; + xwaylandvideobridge = callPackage ./xwaylandvideobridge.nix {}; }; - modrinth-app = callPackage ./modrinth-app/wrapper.nix {}; - treefetch = callPackage ./treefetch.nix {}; - swhkd = callPackage ./swhkd {}; - vim-just = callPackage ./vim-just.nix {}; - xwaylandvideobridge = callPackage ./xwaylandvideobridge.nix {}; -} +in + packages diff --git a/pkgs/default.nix b/pkgs/default.nix index 8471def..cd49eb2 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,22 +1,13 @@ -{ - self, - inputs, - ... -}: { +_: { perSystem = { lib, pkgs, system, ... }: { - _module.args.pkgs = import inputs.nixpkgs { - inherit system; - overlays = [self.overlays.default]; - }; - packages = let p = let - packages = import ./all-packages.nix pkgs; + packages = import ./all-packages.nix {prev = pkgs;}; in lib.filterAttrs (_: v: builtins.elem system (v.meta.platforms or []) && !(v.meta.broken or false)) @@ -25,5 +16,5 @@ p // {default = p.treefetch;}; }; - flake.overlays.default = final: _: import ./all-packages.nix final; + flake.overlays.default = final: prev: import ./all-packages.nix {inherit final prev;}; } diff --git a/templates/basic/default.nix b/templates/basic/default.nix new file mode 100644 index 0000000..5d0e6a1 --- /dev/null +++ b/templates/basic/default.nix @@ -0,0 +1,25 @@ +{ + lib, + stdenv, + self, + version, + ... +}: +stdenv.mkDerivation { + pname = "hello"; + inherit version; + + src = self; + + installPhase = '' + echo "hi" > $out + ''; + + meta = with lib; { + description = ""; + homepage = ""; + license = licenses.mit; + maintainers = [maintainers.getchoo]; + platforms = platforms.linux; + }; +} diff --git a/templates/basic/flake.nix b/templates/basic/flake.nix index 32fd25b..17943a8 100644 --- a/templates/basic/flake.nix +++ b/templates/basic/flake.nix @@ -10,6 +10,7 @@ nixpkgs, ... }: let + inherit (nixpkgs) lib; version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; systems = [ @@ -19,14 +20,13 @@ "aarch64-darwin" ]; - genSystems = nixpkgs.lib.genAttrs systems; - nixpkgsFor = genSystems (system: - import nixpkgs { - inherit system; - overlays = [self.overlays.default]; - }); - + genSystems = lib.genAttrs systems; + nixpkgsFor = genSystems (sys: nixpkgs.legacyPackages.${sys}); forAllSystems = fn: genSystems (sys: fn nixpkgsFor.${sys}); + + packageFn = pkgs: { + hello = pkgs.callPackage ./default.nix {inherit self version;}; + }; in { devShells = forAllSystems (pkgs: { default = pkgs.mkShell { @@ -43,25 +43,6 @@ default = pkgs.hello; }); - overlays.default = _: prev: { - hello = prev.stdenv.mkDerivation { - pname = "hello"; - inherit version; - - src = self; - - installPhase = '' - echo "hi" > $out - ''; - - meta = with prev.lib; { - description = ""; - homepage = ""; - license = licenses.mit; - maintainers = [maintainers.getchoo]; - platforms = platforms.linux; - }; - }; - }; + overlays.default = _: prev: (packageFn prev); }; } -- cgit v1.2.3