flake: use inputs block, readDir pkgs safely, and builtins.map for packages
This commit is contained in:
22
flake.nix
22
flake.nix
@@ -1,5 +1,7 @@
|
||||
{
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
@@ -8,11 +10,13 @@
|
||||
|
||||
pkgsDir = ./pkgs;
|
||||
|
||||
entries = builtins.readDir pkgsDir;
|
||||
entries = if builtins.pathExists pkgsDir then builtins.readDir pkgsDir else [];
|
||||
|
||||
# only subdirectories
|
||||
pkgNames =
|
||||
lib.attrNames (lib.filterAttrs (_: t: t == "directory") entries);
|
||||
# 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;
|
||||
|
||||
loadPkg = name:
|
||||
let
|
||||
@@ -23,13 +27,7 @@
|
||||
flake.packages.${system}.default;
|
||||
|
||||
# build final package set
|
||||
packages =
|
||||
lib.listToAttrs (
|
||||
map (name: {
|
||||
inherit name;
|
||||
value = loadPkg name;
|
||||
}) pkgNames
|
||||
);
|
||||
packages = lib.listToAttrs (builtins.map (name: { inherit name; value = loadPkg name; }) pkgNames);
|
||||
|
||||
in {
|
||||
packages.${system} = packages;
|
||||
|
||||
Reference in New Issue
Block a user