templates/flake.nix

29 lines
892 B
Nix
Raw Normal View History

2023-01-30 22:21:14 -05:00
{
description = "The Sieve of Eratosthenes implemented in many different languages";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs) lib;
2023-01-30 22:21:14 -05:00
# Check if project has a shell.nix
hasShell = dir: (builtins.readDir ./${dir}) ? "shell.nix";
# Get all project directories
2023-01-30 22:21:14 -05:00
currentDir = builtins.readDir ./.;
dirs = lib.filterAttrs (_: v: v == "directory") currentDir;
in
lib.concatMapAttrs (dir: _: {
packages.${dir} = pkgs.callPackage ./${dir} {};
} // lib.optionalAttrs (hasShell dir) {
devShells.${dir} = pkgs.callPackage ./${dir}/shell.nix {};
}) dirs
);
2023-01-30 22:21:14 -05:00
}