diff --git a/default.nix b/default.nix index 14d844d..bc2b5e6 100644 --- a/default.nix +++ b/default.nix @@ -1,18 +1,29 @@ -{ pkgs, google-chrome, symlinkJoin, stdenv, elmPackages, libjpeg, optipng, pngquant, libwebp, ... }: +{ pkgs, google-chrome, symlinkJoin, stdenv, elmPackages, libjpeg, optipng +, pngquant, libwebp, ... }: let pnpm2nix = pkgs.callPackage (builtins.fetchGit { url = "https://github.com/notgne2/pnpm2nix.git"; rev = "909accd35d23664254b43109ee58cd0c3d83a6d9"; - }) {}; + }) { }; - nodeCleanSourceFilter = name: type: pkgs.lib.cleanSourceFilter name type && - ((baseNameOf name) != "node_modules"); - nodeCleanSource = src: pkgs.lib.cleanSourceWith { filter = nodeCleanSourceFilter; inherit src; }; + nodeCleanSourceFilter = name: type: + pkgs.lib.cleanSourceFilter name type + && ((baseNameOf name) != "node_modules"); + nodeCleanSource = src: + pkgs.lib.cleanSourceWith { + filter = nodeCleanSourceFilter; + inherit src; + }; - elmCleanSourceFilter = name: type: nodeCleanSourceFilter name type && - ((baseNameOf name) != "elm-stuff" && (baseNameOf name) != "dist"); - elmCleanSource = src: pkgs.lib.cleanSourceWith { filter = elmCleanSourceFilter; inherit src; }; + elmCleanSourceFilter = name: type: + nodeCleanSourceFilter name type + && ((baseNameOf name) != "elm-stuff" && (baseNameOf name) != "dist"); + elmCleanSource = src: + pkgs.lib.cleanSourceWith { + filter = elmCleanSourceFilter; + inherit src; + }; builderPkg = pnpm2nix.mkPnpmPackage { name = "builder-node-packages"; @@ -20,78 +31,72 @@ let pnpmLock = ./pnpm-lock.yaml; src = nodeCleanSource ./.; overrides = pnpm2nix.defaultPnpmOverrides // { - puppeteer = (drv: drv.overrideAttrs(oldAttrs: { - preBuild = '' - # Define the local chromium directory - local_chromium=$HOME/node_modules/puppeteer/.local-chromium/linux-686378 - # Make sure that directory exists - mkdir -p $local_chromium - # Link pkgs' standard google chrome into place - cp -r --no-preserve=mode,ownership ${google-chrome}/share/google/chrome $local_chromium/chrome-linux - cp ${google-chrome}/bin/google-chrome-stable $local_chromium/chrome-linux/chrome - chmod +x $local_chromium/chrome-linux/chrome - ''; - })); - imagemin-pngquant = (drv: drv.overrideAttrs(oldAttrs: { - buildInputs = oldAttrs.buildInputs ++ [ pkgs.libpng ]; - })); - pngquant-bin = (drv: drv.overrideAttrs(oldAttrs: { - preBuild = '' - mkdir -p $HOME/node_modules/pngquant-bin/vendor - ln -s ${pngquant}/bin/pngquant $HOME/node_modules/pngquant-bin/vendor/pngquant - ''; - })); + puppeteer = (drv: + drv.overrideAttrs (oldAttrs: { + preBuild = '' + # Define the local chromium directory + local_chromium=$HOME/node_modules/puppeteer/.local-chromium/linux-686378 + # Make sure that directory exists + mkdir -p $local_chromium + # Link pkgs' standard google chrome into place + cp -r --no-preserve=mode,ownership ${google-chrome}/share/google/chrome $local_chromium/chrome-linux + cp ${google-chrome}/bin/google-chrome-stable $local_chromium/chrome-linux/chrome + chmod +x $local_chromium/chrome-linux/chrome + ''; + })); + imagemin-pngquant = (drv: + drv.overrideAttrs + (oldAttrs: { buildInputs = oldAttrs.buildInputs ++ [ pkgs.libpng ]; })); + pngquant-bin = (drv: + drv.overrideAttrs (oldAttrs: { + preBuild = '' + mkdir -p $HOME/node_modules/pngquant-bin/vendor + ln -s ${pngquant}/bin/pngquant $HOME/node_modules/pngquant-bin/vendor/pngquant + ''; + })); - gifsicle = (drv: drv.overrideAttrs(oldAttrs: { - buildInputs = oldAttrs.buildInputs ++ [ pkgs.autoconf pkgs.automake ]; - })); + gifsicle = (drv: + drv.overrideAttrs (oldAttrs: { + buildInputs = oldAttrs.buildInputs ++ [ pkgs.autoconf pkgs.automake ]; + })); - optipng = (drv: drv.overrideAttrs(oldAttrs: { - buildInputs = [ optipng ]; - })); - optipng-bin = (drv: drv.overrideAttrs(oldAttrs: { - preBuild = '' - mkdir -p $HOME/node_modules/optipng-bin/vendor - ln -s ${optipng}/bin/optipng $HOME/node_modules/optipng-bin/vendor/optipng - ''; - })); + optipng = + (drv: drv.overrideAttrs (oldAttrs: { buildInputs = [ optipng ]; })); + optipng-bin = (drv: + drv.overrideAttrs (oldAttrs: { + preBuild = '' + mkdir -p $HOME/node_modules/optipng-bin/vendor + ln -s ${optipng}/bin/optipng $HOME/node_modules/optipng-bin/vendor/optipng + ''; + })); - jpegtran = (drv: drv.overrideAttrs(oldAttrs: { - buildInputs = [ libjpeg ]; - })); - jpegtran-bin = (drv: drv.overrideAttrs(oldAttrs: { - preBuild = '' - mkdir -p $HOME/node_modules/jpegtran-bin/vendor - ln -s ${libjpeg}/bin/jpegtran $HOME/node_modules/jpegtran-bin/vendor/jpegtran - ''; - })); + jpegtran = + (drv: drv.overrideAttrs (oldAttrs: { buildInputs = [ libjpeg ]; })); + jpegtran-bin = (drv: + drv.overrideAttrs (oldAttrs: { + preBuild = '' + mkdir -p $HOME/node_modules/jpegtran-bin/vendor + ln -s ${libjpeg}/bin/jpegtran $HOME/node_modules/jpegtran-bin/vendor/jpegtran + ''; + })); - - cwebp-bin = (drv: drv.overrideAttrs(oldAttrs: { - buildPhase = '' - mkdir -p $HOME/node_modules/cwebp-bin/vendor/ - ln -s ${libwebp}/bin/cwebp $HOME/node_modules/cwebp-bin/vendor/cwebp - ''; - })); + cwebp-bin = (drv: + drv.overrideAttrs (oldAttrs: { + buildPhase = '' + mkdir -p $HOME/node_modules/cwebp-bin/vendor/ + ln -s ${libwebp}/bin/cwebp $HOME/node_modules/cwebp-bin/vendor/cwebp + ''; + })); }; }; - mkWandardFront = { - name, - prettyName ? name, - description ? "", - themeColor ? "#000000", - backgroundColor ? "#000000", - src, - nodePackages ? [], - routes ? [ "/" ], - }: + mkWandardFront = { name, prettyName ? name, description ? "" + , themeColor ? "#000000", backgroundColor ? "#000000", src + , nodePackages ? [ ], routes ? [ "/" ], }: let nodeSource = symlinkJoin { name = "${name}-node-sources"; - paths = [ - builderPkg.lib - ] ++ nodePackages; + paths = [ builderPkg.lib ] ++ nodePackages; }; baseWebpackConfig = builtins.readFile ./webpack.config.js; @@ -158,17 +163,12 @@ let ''; - in - stdenv.mkDerivation { + in stdenv.mkDerivation { inherit name; src = elmCleanSource src; - buildInputs = with elmPackages; [ - elm - elm-format - nodeSource - ]; + buildInputs = with elmPackages; [ elm elm-format nodeSource ]; patchPhase = '' ln -sf ${nodeSource}/node_modules . @@ -200,7 +200,4 @@ let mv dist/* $out ''; }; -in -{ - inherit mkWandardFront; -} \ No newline at end of file +in { inherit mkWandardFront; }