flake: use inputs block, readDir pkgs safely, and builtins.map for packages

This commit is contained in:
2026-04-12 19:53:50 +02:00
parent 6174d331e4
commit 1b71cd450f

View File

@@ -1,5 +1,7 @@
{ {
inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
};
outputs = { self, nixpkgs }: outputs = { self, nixpkgs }:
let let
@@ -8,11 +10,13 @@
pkgsDir = ./pkgs; pkgsDir = ./pkgs;
entries = builtins.readDir pkgsDir; entries = if builtins.pathExists pkgsDir then builtins.readDir pkgsDir else [];
# only subdirectories # builtins.readDir returns a list of names; when pkgs are present as
pkgNames = # committed directories use them directly. (If you use git submodules,
lib.attrNames (lib.filterAttrs (_: t: t == "directory") entries); # their contents are not available during flake evaluation unless
# vendored.)
pkgNames = entries;
loadPkg = name: loadPkg = name:
let let
@@ -23,13 +27,7 @@
flake.packages.${system}.default; flake.packages.${system}.default;
# build final package set # build final package set
packages = packages = lib.listToAttrs (builtins.map (name: { inherit name; value = loadPkg name; }) pkgNames);
lib.listToAttrs (
map (name: {
inherit name;
value = loadPkg name;
}) pkgNames
);
in { in {
packages.${system} = packages; packages.${system} = packages;