diff --git a/modules/shell/module.nix b/modules/shell/module.nix new file mode 100644 index 0000000..714aafd --- /dev/null +++ b/modules/shell/module.nix @@ -0,0 +1,22 @@ +{ + config, + inputs, + lib, + pkgs, + ... +}: let + test = inputs.wrapper-manager.lib.build { + inherit pkgs; + modules = [ + { + wrappers = { + test = { + basePackage = pkgs.hello; + }; + }; + } + ]; + }; +in { + environment.systemPackages = [test]; +} diff --git a/parts/pkgs/default.nix b/parts/pkgs/default.nix new file mode 100644 index 0000000..e082795 --- /dev/null +++ b/parts/pkgs/default.nix @@ -0,0 +1,28 @@ +{inputs, ...}: { + # NOTE: We use flake-parts' easyOverlay module to extend our default packages with some extra packages I want to have. + # + imports = [inputs.flake-parts.flakeModules.easyOverlay]; + perSystem = { + config, + lib, + pkgs, + ... + }: { + + # Attributes to add to overlays.default. + # The overlays.default overlay will re-evaluate perSystem with the “prev” (or “super”) overlay argument value + # as the pkgs module argument. The easyOverlay module also adds the final module argument, for the result of applying the overlay. + + # When not in an overlay, final defaults to pkgs plus the generated overlay. + # This requires Nixpkgs to be re-evaluated, which is more expensive than setting + # pkgs to a Nixpkgs that already includes the necessary overlays that are required + # for the flake itself. + overlayAttrs = config.extraPackages; + + # https://noogle.dev/f/lib/filesystem/packagesFromDirectoryRecursive + extraPackages = lib.packagesFromDirectoryRecursive { + inherit (pkgs) callPackage; + directory = ./extraPackages; + }; + }; +}