You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
{ |
|
inputs = { |
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
|
flake-utils.url = "github:numtide/flake-utils"; |
|
gitignore = { |
|
url = "github:hercules-ci/gitignore.nix"; |
|
inputs.nixpkgs.follows = "nixpkgs"; |
|
}; |
|
}; |
|
|
|
outputs = { |
|
self, |
|
nixpkgs, |
|
gitignore, |
|
flake-utils, |
|
... |
|
}: |
|
flake-utils.lib.eachDefaultSystem ( |
|
system: let |
|
pkgs = nixpkgs.legacyPackages.${system}; |
|
packageJSON = pkgs.lib.importJSON ./package.json; |
|
gitignoreSource = gitignore.lib.gitignoreSource; |
|
in { |
|
packages = rec { |
|
site-src = pkgs.mkYarnPackage rec { |
|
name = "${packageJSON.name}-site-${version}"; |
|
version = packageJSON.version; |
|
src = gitignoreSource ./.; |
|
packageJson = "${src}/package.json"; |
|
yarnLock = "${src}/yarn.lock"; |
|
buildPhase = '' |
|
yarn --offline build |
|
''; |
|
distPhase = "true"; |
|
}; |
|
|
|
default = pkgs.writeShellApplication { |
|
name = packageJSON.name; |
|
runtimeInputs = [site-src pkgs.nodejs]; |
|
text = '' |
|
node ${site-src}/libexec/${packageJSON.name}/deps/${packageJSON.name}/build |
|
''; |
|
}; |
|
}; |
|
|
|
devShell = pkgs.mkShell { |
|
buildInputs = [pkgs.yarn pkgs.nodejs]; |
|
}; |
|
} |
|
); |
|
}
|
|
|