packages/overlays: use builtins.readDir for dynamic package discovery
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>
This commit is contained in:
parent
29f7621d42
commit
124d414359
1 changed files with 18 additions and 8 deletions
|
|
@ -1,12 +1,22 @@
|
|||
{ 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: {
|
||||
base16-schemes = inputs.self.packages.${final.system}.base16-schemes;
|
||||
claude-desktop = inputs.self.packages.${final.system}.claude-desktop;
|
||||
fastfetch = inputs.self.packages.${final.system}.fastfetch;
|
||||
hm-cli = inputs.self.packages.${final.system}.hm-cli;
|
||||
kwrite = inputs.self.packages.${final.system}.kwrite;
|
||||
toggleaudiosink = inputs.self.packages.${final.system}.toggleaudiosink;
|
||||
};
|
||||
flake.overlays.default = final: prev:
|
||||
builtins.listToAttrs (map (name: {
|
||||
inherit name;
|
||||
value = inputs.self.packages.${final.system}.${name};
|
||||
}) packageNames);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue