Almost got nix-build working
for now we can just deploy via: nix-shell --command "yarn prod"
This commit is contained in:
parent
8077030139
commit
0536f6ed71
71
default.nix
71
default.nix
|
@ -2,13 +2,54 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
package = builtins.fromJSON (builtins.readFile ./package.json);
|
||||||
|
yarn2nix = import (pkgs.fetchFromGitHub {
|
||||||
|
owner = "moretea";
|
||||||
|
repo = "yarn2nix";
|
||||||
|
rev = "9e7279edde2a4e0f5ec04c53f5cd64440a27a1ae";
|
||||||
|
sha256 = "sha256-x77mYSvwA4bd/uCwL0rRw+8mwH+dR/UfWnn4YXmm4n8=";
|
||||||
|
}) { inherit pkgs; };
|
||||||
|
yarnPkg = yarn2nix.mkYarnPackage rec {
|
||||||
|
name = "${package.name}-yarn-${package.version}";
|
||||||
|
src = null;
|
||||||
|
dontUnpack = true;
|
||||||
|
packageJSON = ./package.json;
|
||||||
|
yarnLock = ./yarn.lock;
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir ${package.name}
|
||||||
|
cd ${package.name}
|
||||||
|
ln -s ${packageJSON} ./package.json
|
||||||
|
ln -s ${yarnLock} ./yarn.lock
|
||||||
|
'';
|
||||||
|
yarnPreBuild = ''
|
||||||
|
mkdir -p $HOME/.node-gyp/${pkgs.nodejs.version}
|
||||||
|
echo 9 > $HOME/.node-gyp/${pkgs.nodejs.version}/installVersion
|
||||||
|
ln -sfv ${pkgs.nodejs}/include $HOME/.node-gyp/${pkgs.nodejs.version}
|
||||||
|
'';
|
||||||
|
pkgConfig = {
|
||||||
|
node-sass = {
|
||||||
|
buildInputs = [ pkgs.python pkgs.libsass pkgs.pkgconfig];
|
||||||
|
postInstall = ''
|
||||||
|
LIBSASS_EXT=auto yarn --offline run build
|
||||||
|
rm build/config.gypi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
publishBinsFor =
|
||||||
|
[ "webpack"
|
||||||
|
"webpack-dev-server"
|
||||||
|
];
|
||||||
|
};
|
||||||
in pkgs.stdenv.mkDerivation {
|
in pkgs.stdenv.mkDerivation {
|
||||||
name = "nixos-search";
|
name = "${package.name}-${package.version}";
|
||||||
src = pkgs.lib.cleanSource ./.;
|
src = pkgs.lib.cleanSource ./.;
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
|
[ yarnPkg
|
||||||
|
] ++
|
||||||
(with pkgs; [
|
(with pkgs; [
|
||||||
nodejs
|
nodejs
|
||||||
|
elm2nix
|
||||||
]) ++
|
]) ++
|
||||||
(with pkgs.nodePackages; [
|
(with pkgs.nodePackages; [
|
||||||
yarn
|
yarn
|
||||||
|
@ -18,8 +59,36 @@ in pkgs.stdenv.mkDerivation {
|
||||||
elm-format
|
elm-format
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
# TODO: elm-webpack-loader is trying to download the packages instead of using
|
||||||
|
# configurePhase = pkgs.elmPackages.fetchElmDeps {
|
||||||
|
# elmPackages = import ./elm-srcs.nix;
|
||||||
|
# elmVersion = pkgs.elmPackages.elm.version;
|
||||||
|
# registryDat = ./registry.dat;
|
||||||
|
# };
|
||||||
|
|
||||||
|
patchPhase = ''
|
||||||
|
rm -rf elm-stuff
|
||||||
|
rm -rf node_modules
|
||||||
|
ln -sf ${yarnPkg}/libexec/${package.name}/node_modules .
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
# Yarn writes cache directories etc to $HOME.
|
||||||
|
export HOME=$PWD/yarn_home
|
||||||
|
yarn prod
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -R ./dist/* $out/
|
||||||
|
'';
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
rm -rf node_modules
|
||||||
|
ln -sf ${yarnPkg}/libexec/${package.name}/node_modules .
|
||||||
export PATH=$PWD/node_modules/.bin:$PATH
|
export PATH=$PWD/node_modules/.bin:$PATH
|
||||||
|
echo "============================"
|
||||||
|
echo "= To develop run: yarn dev ="
|
||||||
|
echo "============================"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue