{ description = "Angestöpselt Homepage"; inputs.nixpkgs.url = "nixpkgs/nixos-unstable"; inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = {self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; nodejs = pkgs.nodejs-16_x; nodePackages = import ./nix/default.nix { inherit pkgs system nodejs; }; nodeDependencies = nodePackages.nodeDependencies.override { nativeBuildInputs = with pkgs; [ pkg-config ]; buildInputs = with pkgs; [ vips ]; dontNpmInstall = true; }; angestoepseltSite = pkgs.stdenv.mkDerivation { name = "angestoepseltSite"; src = self; buildInputs = [ nodejs nodeDependencies ]; buildPhase = '' npm run build ''; installPhase = '' mkdir -p "$out" cp -r _site "$out/www" ''; }; in rec { apps = { inherit angestoepseltSite; }; defaultApp = apps.angestoepseltSite; packages = { inherit angestoepseltSite; # This package isn't actually the fully-built site, but rather a # derivation that contains the relevant programs (with correctly set up # environment) to develop and build the site. It can either be used with # `nix develop` – see the repository's readme for details – or compiled # with `nix build`. The latter will output a folder which contains node # and npm binaries that can be used in an IDE. angestoepseltSiteEnv = pkgs.symlinkJoin { name = "angestoepseltSiteEnv"; buildInputs = [ pkgs.makeWrapper ]; paths = [ nodejs nodeDependencies ]; postBuild = '' wrapProgram "$out/bin/node" \ --prefix PATH : "$out/lib/node_modules/.bin" \ --prefix NODE_PATH : "$out/lib/node_modules" ''; shellHook = '' export NODE_PATH=${nodeDependencies}/lib/node_modules export PATH="${nodeDependencies}/bin:${nodejs}/bin:${pkgs.nodePackages.npm-check-updates}/bin:$PATH" echo "" echo " To start editing content, run:" echo "" echo "npm run build:styles" echo "npm run dev:site" echo "" echo " The site will be available under http://localhost:8080/ for" echo " local development and rebuilds automatically when content" echo " changes." echo "" ''; }; }; defaultPackage = packages.angestoepseltSite; devShell = packages.angestoepseltSiteEnv; } ); }