2026-04-12 17:19:04 +02:00
|
|
|
{
|
2026-04-12 19:53:50 +02:00
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs";
|
|
|
|
|
};
|
2026-04-12 17:19:04 +02:00
|
|
|
|
|
|
|
|
outputs = { self, nixpkgs }:
|
|
|
|
|
let
|
|
|
|
|
system = "x86_64-linux";
|
|
|
|
|
lib = nixpkgs.lib;
|
|
|
|
|
|
|
|
|
|
pkgsDir = ./pkgs;
|
|
|
|
|
|
2026-04-12 19:53:50 +02:00
|
|
|
entries = if builtins.pathExists pkgsDir then builtins.readDir pkgsDir else [];
|
2026-04-12 17:19:04 +02:00
|
|
|
|
2026-04-12 19:53:50 +02:00
|
|
|
# builtins.readDir returns a list of names; when pkgs are present as
|
|
|
|
|
# committed directories use them directly. (If you use git submodules,
|
|
|
|
|
# their contents are not available during flake evaluation unless
|
|
|
|
|
# vendored.)
|
|
|
|
|
pkgNames = entries;
|
2026-04-12 17:19:04 +02:00
|
|
|
|
|
|
|
|
loadPkg = name:
|
|
|
|
|
let
|
|
|
|
|
path = pkgsDir + "/${name}";
|
|
|
|
|
flake = builtins.getFlake (toString path);
|
|
|
|
|
in
|
|
|
|
|
# since all are guaranteed identical shape:
|
|
|
|
|
flake.packages.${system}.default;
|
|
|
|
|
|
|
|
|
|
# build final package set
|
2026-04-12 19:53:50 +02:00
|
|
|
packages = lib.listToAttrs (builtins.map (name: { inherit name; value = loadPkg name; }) pkgNames);
|
2026-04-12 17:19:04 +02:00
|
|
|
|
|
|
|
|
in {
|
|
|
|
|
packages.${system} = packages;
|
|
|
|
|
|
2026-04-12 19:54:12 +02:00
|
|
|
extra = {
|
|
|
|
|
pkgNames = pkgNames;
|
|
|
|
|
};
|
|
|
|
|
|
2026-04-12 17:19:04 +02:00
|
|
|
overlays.default = final: prev: {
|
|
|
|
|
myPkgs = packages;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|