diff --git a/default.nix b/default.nix
index 93a424e..73df194 100644
--- a/default.nix
+++ b/default.nix
@@ -1,245 +1,17 @@
-pkgs: inputs:
-let
- pnpm2nix = pkgs.callPackage inputs.pnpm2nix { };
+# SPDX-FileCopyrightText: 2020 Serokell
+#
+# SPDX-License-Identifier: MPL-2.0
- 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;
- };
-
- builderPkg = pnpm2nix.mkPnpmPackage {
- name = "builder-node-packages";
- packageJSON = ./package.json;
- 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 ${pkgs.google-chrome}/share/google/chrome $local_chromium/chrome-linux
- cp ${pkgs.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 ${pkgs.pngquant}/bin/pngquant $HOME/node_modules/pngquant-bin/vendor/pngquant
- '';
- }
- )
- );
-
- gifsicle = (
- drv:
- drv.overrideAttrs (
- oldAttrs: {
- buildInputs = oldAttrs.buildInputs ++ [ pkgs.autoconf pkgs.automake ];
- }
- )
- );
-
- optipng =
- (drv: drv.overrideAttrs (oldAttrs: { buildInputs = [ pkgs.optipng ]; }));
- optipng-bin = (
- drv:
- drv.overrideAttrs (
- oldAttrs: {
- preBuild = ''
- mkdir -p $HOME/node_modules/optipng-bin/vendor
- ln -s ${pkgs.optipng}/bin/optipng $HOME/node_modules/optipng-bin/vendor/optipng
- '';
- }
- )
- );
-
- jpegtran =
- (drv: drv.overrideAttrs (oldAttrs: { buildInputs = [ pkgs.libjpeg ]; }));
- jpegtran-bin = (
- drv:
- drv.overrideAttrs (
- oldAttrs: {
- preBuild = ''
- mkdir -p $HOME/node_modules/jpegtran-bin/vendor
- ln -s ${pkgs.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 ${pkgs.libwebp}/bin/cwebp $HOME/node_modules/cwebp-bin/vendor/cwebp
- '';
- }
- )
- );
- };
- };
-
- mkWandardFront =
- { name
- , prettyName ? name
- , description ? ""
- , themeColor ? "#000000"
- , backgroundColor ? "#000000"
- , src
- , nodePackages ? [ ]
- , routes ? [ "/" ]
- , extraHead ? ""
- , extraBody ? ""
- , extraPostBody ? ""
- }:
+(import
+ (
let
- nodeSource = pkgs.symlinkJoin {
- name = "${name}-node-sources";
- paths = [ builderPkg.lib ] ++ nodePackages;
- };
-
- baseWebpackConfig = builtins.readFile ./webpack.config.js;
- webpackConfig = ''
- const ROUTES = ${builtins.toJSON routes}
- const PRETTY_NAME = ${builtins.toJSON prettyName}
- const DESCRIPTION = ${builtins.toJSON description}
- const THEME_COLOR = ${builtins.toJSON themeColor}
- const BACKGROUND_COLOR = ${builtins.toJSON backgroundColor}
- '' + "\n" + baseWebpackConfig;
- webpackConfigFile = pkgs.writeText "${name}-webpack-config" webpackConfig;
-
- wandInit = pkgs.writeText "wand.js" ''
- document.body.innerHTML = '''
- const sourceTarget = document.createElement('script')
- sourceTarget.src = '/main.js'
- document.body.appendChild(sourceTarget)
- '';
-
- templateHtml = pkgs.writeText "template.html" ''
-
-
-
-
- ${prettyName}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${extraHead}
-
-
- ${extraBody}
-
- ${extraPostBody}
-
- '';
+ lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
- pkgs.stdenv.mkDerivation {
- inherit name;
-
- src = elmCleanSource src;
-
- buildInputs = with pkgs.elmPackages; [ elm nodeSource ];
-
- patchPhase = ''
- ln -sf ${nodeSource}/node_modules .
- cp ${webpackConfigFile} webpack.config.js
- cp ${
- ./imagemin-jpgify-webpack-plugin.js
- } .imagemin-jpgify-webpack-plugin.js
- cp ${wandInit} wand.js
- cp ${templateHtml} template.html
- '';
-
- shellHook = ''
- ln -sf ${nodeSource}/node_modules .
- rm -f webpack.config.js
- rm -f wand.js
- rm -f template.html
- cp ${webpackConfigFile} webpack.config.js
- cp ${
- ./imagemin-jpgify-webpack-plugin.js
- } .imagemin-jpgify-webpack-plugin.js
- cp ${wandInit} wand.js
- cp ${templateHtml} template.html
- export NODE_PATH=$PWD/node_modules
- '';
-
- buildPhase = pkgs.elmPackages.fetchElmDeps {
- elmPackages = import (src + "/elm-srcs.nix");
- registryDat = src + "/registry.dat";
- elmVersion = "0.19.1";
- };
-
- installPhase = ''
- mkdir -p $out
- ${nodeSource}/node_modules/webpack-cli/bin/cli.js --mode production
- mv dist/* $out
- '';
- };
-in
-{ inherit mkWandardFront; }
+ fetchTarball {
+ url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
+ sha256 = lock.nodes.flake-compat.locked.narHash;
+ }
+ )
+ {
+ src = ./.;
+ }).defaultNix