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, ... }:
|
{ 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: {
|
flake.overlays.default = final: prev:
|
||||||
base16-schemes = inputs.self.packages.${final.system}.base16-schemes;
|
builtins.listToAttrs (map (name: {
|
||||||
claude-desktop = inputs.self.packages.${final.system}.claude-desktop;
|
inherit name;
|
||||||
fastfetch = inputs.self.packages.${final.system}.fastfetch;
|
value = inputs.self.packages.${final.system}.${name};
|
||||||
hm-cli = inputs.self.packages.${final.system}.hm-cli;
|
}) packageNames);
|
||||||
kwrite = inputs.self.packages.${final.system}.kwrite;
|
|
||||||
toggleaudiosink = inputs.self.packages.${final.system}.toggleaudiosink;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue