{ description = "Stefan Kreutz's personal website"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; }; outputs = inputs@{ self, nixpkgs, flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; perSystem = { pkgs, system, ... }: let src = builtins.path { path = ./.; name = "blog"; }; in rec { # nix develop devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ ghc cabal-install lychee zlib ]; }; # nix build . # nix run nixpkgs#python3 -- -m http.server --directory ./result/srv/www.skreutz.com --bind 127.0.0.1 8080 # open http://127.0.0.1:8080/ packages.default = packages.site; # nix run .#generator -- --help packages.generator = pkgs.haskell.lib.compose.justStaticExecutables ( pkgs.haskellPackages.callCabal2nix "blog" src { } ); # nix build .#site packages.site = pkgs.callPackage ./site.nix { inherit self; inherit (packages) generator; }; # nix flake check checks.links = pkgs.stdenvNoCC.mkDerivation { inherit src; name = "offline-link-check"; dontBuild = true; doCheck = true; nativeBuildInputs = with pkgs; [ lychee ]; checkPhase = '' "${packages.generator}/bin/site" rebuild lychee --offline --no-progress --require-https --root-dir "$( realpath _site )" _site ''; installPhase = '' mkdir $out ''; }; # nix fmt formatter = pkgs.nixfmt-tree; }; }; }