{ 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); }); }