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 }:
|
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user