gen2space/flake.nix
2023-10-02 01:16:42 -07:00

118 lines
2.6 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
utils.url = "github:numtide/flake-utils";
nix-npm-buildpackage = {
url = "github:serokell/nix-npm-buildpackage";
inputs.nixpkgs.follows = "nixpkgs";
};
gitignore = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
};
outputs = {
self,
nixpkgs,
utils,
nix-npm-buildpackage,
gitignore,
...
}:
utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [nix-npm-buildpackage.overlays.default];
};
src = gitignore.lib.gitignoreSource ./.;
nodeDependencies = with pkgs; [
nasm
zlib
optipng
libpng
libtool
automake
autoconf
vips
vips.dev
pkg-config
python3
nodePackages.node-gyp
nodePackages.node-gyp-build
];
buildVars = {
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "1";
PUPPETEER_EXECUTABLE_PATH = "${pkgs.chromium}/bin/chromium";
};
preBuild = ''
export LD=$CC
'';
in {
packages.gen2-space-front-raw = pkgs.buildNpmPackage {
inherit src;
dontNpmPrune = true;
extraNodeModulesArgs = {
buildInputs = nodeDependencies;
};
extraEnvVars = buildVars;
};
packages.gen2-space-front = pkgs.stdenv.mkDerivation ({
name = "gen2-space-front";
src = self.packages.${system}.gen2-space-front-raw;
buildInputs = with pkgs; [nodejs elmPackages.elm];
configurePhase = pkgs.elmPackages.fetchElmDeps {
elmVersion = "0.19.1";
registryDat = ./registry.dat;
elmPackages = import ./elm-srcs.nix;
};
buildPhase = ''
mkdir dist
node $src/node_modules/vite/bin/vite.js build
'';
installPhase = ''
mv dist $out
'';
}
// buildVars);
packages.default = self.packages.${system}.gen2-space-front;
devShells.default = pkgs.mkShell ({
inputsFrom = builtins.attrValues self.packages.${system};
shellHook = ''
export LD=$CC
'';
buildInputs =
nodeDependencies
++ (with pkgs; [
elmPackages.elm
elmPackages.elm-format
elmPackages.elm-review
elm2nix
nodejs
]);
}
// buildVars);
});
}