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.
65 lines
1.8 KiB
65 lines
1.8 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.gitlint |
|
pkgs.nodejs |
|
pkgs.corepack |
|
]; |
|
|
|
shellHook = '' |
|
yarn set version 4.5.0 |
|
# auto-install git hooks |
|
dot_git="$(git rev-parse --git-common-dir)" |
|
if [[ ! -d "$dot_git/hooks" ]]; then mkdir "$dot_git/hooks"; fi |
|
for hook in git_hooks/* ; do ln -sf "$(pwd)/$hook" "$dot_git/hooks/" ; done |
|
''; |
|
}; |
|
} |
|
); |
|
}
|
|
|