diff options
| author | Stefan Kreutz <mail@skreutz.com> | 2025-12-07 15:19:50 +0100 |
|---|---|---|
| committer | Stefan Kreutz <mail@skreutz.com> | 2025-12-07 15:19:50 +0100 |
| commit | f3b750778925417e1ced768b00fd1a2f652b08eb (patch) | |
| tree | 5a6e60bfe6bb4137a91c3b0e44db2f38e5c57f6d /flake.nix | |
| parent | ed6dd599ae12a152d8dd6d9063ff223b30b31d06 (diff) | |
| download | blog-f3b750778925417e1ced768b00fd1a2f652b08eb.tar | |
See also <https://ayats.org/blog/no-flake-utils>.
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 118 |
1 files changed, 71 insertions, 47 deletions
@@ -3,53 +3,77 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - flake-utils.url = "github:numtide/flake-utils"; + flake-parts.url = "github:hercules-ci/flake-parts"; }; - outputs = inputs@{ self, nixpkgs, flake-utils, ... }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { - inherit system; - config = { }; - overlays = [ ]; - }; - src = builtins.path { path = ./.; name = "blog"; }; - in rec { - # nix develop - devShells.default = pkgs.mkShell { - nativeBuildInputs = with pkgs; [ ghc cabal-install lychee zlib ]; - }; - - # nix build . - # open ./result/srv/www.skreutz.com/index.html - 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; - }; - - 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 - ''; - }; - } - ); + 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; + }; + }; } |