84 lines
3.3 KiB
Nix
84 lines
3.3 KiB
Nix
{
|
|
description = "maralorn.de homepage";
|
|
inputs = {
|
|
ema.url = "github:srid/ema/master";
|
|
# Use the nixpkgs used by the pinned ema.
|
|
nixpkgs.follows = "ema/nixpkgs";
|
|
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
windicss = {
|
|
url = "github:srid/windicss-nix";
|
|
flake = false;
|
|
};
|
|
};
|
|
outputs = inputs@{ self, flake-utils, ... }:
|
|
flake-utils.lib.eachSystem [ "x86_64-linux" ] (
|
|
system:
|
|
let
|
|
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
|
haskellPackages = pkgs.haskellPackages.extend (
|
|
final: pref:
|
|
with pkgs.haskell.lib; {
|
|
ema = disableCabalFlag inputs.ema.defaultPackage.${system} "with-examples";
|
|
}
|
|
);
|
|
windicss = (import inputs.windicss { inherit pkgs; }).shell.nodeDependencies;
|
|
in
|
|
rec
|
|
{
|
|
packages = {
|
|
default = packages.page;
|
|
generator = haskellPackages.callCabal2nix "maralorn-de" ./generator { };
|
|
pageWithoutResources = pkgs.runCommand "maralorn.de-without-resources"
|
|
{
|
|
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
|
|
LC_ALL = "en_US.UTF-8";
|
|
} ''
|
|
cp -r ${./content} content
|
|
chmod +w content
|
|
echo ${toString self.lastModified} > content/lastModified
|
|
mkdir $out
|
|
${packages.generator}/bin/run-ema content $out
|
|
'';
|
|
css = pkgs.runCommand "windi.css" { } ''
|
|
${windicss}/bin/windicss '${packages.pageWithoutResources}/**/*.html' -mto $out
|
|
'';
|
|
page = pkgs.runCommand "maralorn.de" { } ''
|
|
mkdir -p $out/static/font $out/static/css
|
|
${pkgs.xorg.lndir}/bin/lndir ${packages.pageWithoutResources} $out
|
|
${pkgs.xorg.lndir}/bin/lndir ${pkgs.libertinus}/share/fonts/opentype $out/static/font
|
|
ln -s ${packages.css} $out/static/css/windi.css
|
|
csshash=$(sha256sum $out/static/css/windi.css | cut -c1-16)
|
|
find $out -iname "*.html" -exec sed -i "s|/static/css/windi.css|/static/css/windi.$csshash.css|" {} + ;
|
|
'';
|
|
};
|
|
apps = rec {
|
|
default = watch;
|
|
watch = flake-utils.lib.mkApp {
|
|
drv = pkgs.writeShellScriptBin "watch" ''
|
|
mkdir -p content/static/font content/static/css
|
|
ln -sf ${packages.css} ./content/static/css/windi.css
|
|
${pkgs.xorg.lndir}/bin/lndir ${pkgs.libertinus}/share/fonts/opentype ./content/static/font
|
|
exec ${pkgs.ghcid}/bin/ghcid -C generator -W -r':main "../content"' '';
|
|
};
|
|
hoogle = flake-utils.lib.mkApp { drv = pkgs.writeShellScriptBin "hoogle-server" ''exec hoogle server --local --links -p 3333''; };
|
|
};
|
|
checks = {
|
|
pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
|
|
src = ./.;
|
|
hooks = {
|
|
hlint.enable = true;
|
|
fourmolu.enable = true;
|
|
};
|
|
};
|
|
};
|
|
devShells.default = haskellPackages.shellFor {
|
|
packages = p: [ packages.generator ];
|
|
buildInputs = [ windicss pkgs.cabal-install ];
|
|
withHoogle = true;
|
|
inherit (self.checks.${system}.pre-commit-check) shellHook;
|
|
};
|
|
}
|
|
);
|
|
}
|