node-cli-template/flake.nix

46 lines
1.4 KiB
Nix
Raw Normal View History

2026-02-15 17:38:53 +07:00
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
};
outputs = inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } (
{
systems = [ "x86_64-linux" ];
2026-02-25 14:45:40 +07:00
perSystem = { config, system, pkgs, lib, ... }:
let
2026-02-25 16:20:26 +07:00
packageJson = builtins.fromJSON (builtins.readFile ./package.json);
2026-02-25 14:45:40 +07:00
runtimeDeps = [ ]; # e. g. pkgs.jq
runtimePath = lib.makeSearchPath "bin" runtimeDeps;
basePackage = {
2026-02-25 16:20:26 +07:00
pname = packageJson.name;
version = packageJson.version;
2026-02-15 17:38:53 +07:00
src = ./.;
2026-02-25 17:20:13 +07:00
npmDepsHash = "sha256-qZIr0vUhSx/B64kNRAwLPuOTSEBs5wtbEn9rRUAXtaA=";
2026-02-15 17:38:53 +07:00
npmBuildScript = "build";
};
2026-02-25 14:45:40 +07:00
in
{
# runtime deps included
packages.bundled = pkgs.buildNpmPackage (basePackage // {
makeWrapperArgs = [ "--prefix" "PATH" ":" runtimePath ];
});
2026-02-15 17:38:53 +07:00
2026-02-25 14:45:40 +07:00
packages.default = config.packages.bundled;
packages.unbundled = pkgs.buildNpmPackage basePackage;
devShells.default = pkgs.mkShell {
packages = with pkgs;
[ nodejs typescript typescript-language-server ];
};
formatter = pkgs.nixpkgs-fmt;
2026-02-15 17:38:53 +07:00
};
}
);
}