Instead of manually listing packages, the overlay now reads the packages/ directory and automatically includes all .nix files (except overlays.nix itself) as overlay attributes. This makes adding new packages simpler - just add the file and it will automatically be included in the overlay. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
22 lines
655 B
Nix
22 lines
655 B
Nix
{ inputs, ... }:
|
|
|
|
let
|
|
packageDir = builtins.readDir ./.;
|
|
|
|
# Filter to .nix files, excluding overlays.nix
|
|
isPackageFile = name:
|
|
name != "overlays.nix" && builtins.match ".*\\.nix$" name != null;
|
|
|
|
# Extract package name from filename (e.g., "foo-bar.nix" -> "foo-bar")
|
|
toPackageName = filename:
|
|
builtins.head (builtins.match "(.+)\\.nix$" filename);
|
|
|
|
packageNames = map toPackageName (builtins.filter isPackageFile (builtins.attrNames packageDir));
|
|
in
|
|
{
|
|
flake.overlays.default = final: prev:
|
|
builtins.listToAttrs (map (name: {
|
|
inherit name;
|
|
value = inputs.self.packages.${final.system}.${name};
|
|
}) packageNames);
|
|
}
|