{ nixConfig = { trusted-substituters = "https://cache.nixos.org/"; trusted-public-keys = "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="; extra-experimental-features = "nix-command flakes"; }; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11-small"; flake-compat = { url = "github:edolstra/flake-compat"; flake = false; }; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs {inherit system;}; devDeps = with pkgs; [bash hugo zopfli brotli parallel]; in { devShells.default = pkgs.mkShell { packages = devDeps; }; # TODO: cache defaultPackage = pkgs.stdenv.mkDerivation { pname = "jakstys.lt"; version = "1.0.0"; src = pkgs.lib.cleanSource self; buildInputs = [pkgs.hugo]; buildPhase = '' ${pkgs.hugo}/bin/hugo --cleanDestinationDir --printPathWarnings --panicOnWarning --log cd public find . \ -name '*.html' -or \ -name '*.xml' -or \ -name '*.txt' -or \ -name '*.css' -or \ -name '*.map' | \ ${pkgs.parallel}/bin/parallel --eta \ "${pkgs.zopfli}/bin/zopfli {} && ${pkgs.brotli}/bin/brotli {}" ''; installPhase = '' cd .. mv public $out ''; }; # TODO how to run scripts/build as a result of `nix run .`? #packages = flake-utils.lib.mkApp { # name = "build #}; formatter = pkgs.alejandra; }); }