Updated flakes
parent
eced5a29e4
commit
610418ed7c
@ -1,55 +1,21 @@
|
||||
{
|
||||
description = "mcwhirter.io website";
|
||||
description = "My Website";
|
||||
inputs.nixpkgs.url = "github:nixos/nixpkgs";
|
||||
inputs.hakyll-flakes.url = "github:Radvendii/hakyll-flakes";
|
||||
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
inputs = {
|
||||
haskellNix.url = "github:input-output-hk/haskell.nix";
|
||||
nixpkgs.follows = "haskellNix/nixpkgs-unstable";
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
outputs = { self, nixpkgs, utils, haskellNix }:
|
||||
utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system:
|
||||
let
|
||||
overlays = [ haskellNix.overlay
|
||||
(final: prev: {
|
||||
# This overlay adds our project to pkgs
|
||||
mcwhirterIoProject =
|
||||
final.haskell-nix.project' {
|
||||
src = ./.;
|
||||
compiler-nix-name = "ghc8104";
|
||||
};
|
||||
})
|
||||
outputs = { self, hakyll-flakes, flake-utils, nixpkgs }:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
hakyll-flakes.mkAllOutputs {
|
||||
inherit system;
|
||||
name = "mcwhirter-io";
|
||||
src = ./.;
|
||||
websiteBuildInputs = with nixpkgs.legacyPackages.${system}; [
|
||||
rubber
|
||||
texlive.combined.scheme-full
|
||||
poppler_utils
|
||||
];
|
||||
|
||||
lib = pkgs.lib;
|
||||
|
||||
# Run with `nix run .#repl`
|
||||
repl = utils.lib.mkApp {
|
||||
drv = pkgs.writeShellScriptBin "repl" ''
|
||||
confnix=$(mktemp)
|
||||
echo "builtins.getFlake (toString $(git rev-parse --show-toplevel))" >$confnix
|
||||
trap "rm $confnix" EXIT
|
||||
nix repl $confnix
|
||||
'';
|
||||
};
|
||||
pkgs = import nixpkgs { inherit system overlays; };
|
||||
flake = pkgs.mcwhirterIoProject.flake {};
|
||||
in flake // {
|
||||
# Built by `nix build .`
|
||||
defaultPackage = flake.packages."project:exe:site";
|
||||
# Executed by `nix run . -- <args?>`
|
||||
defaultApp = flake.packages."project:exe:site";
|
||||
|
||||
apps = (pkgs.mcwhirterIoProject) // { inherit repl; };
|
||||
|
||||
# This is used by `nix develop .` to open a shell for use with
|
||||
# `cabal`, `hlint` and `haskell-language-server`
|
||||
devShell = pkgs.mcwhirterIoProject.shellFor {
|
||||
tools = {
|
||||
cabal = "latest";
|
||||
hakyll = "latest";
|
||||
haskell-language-server = "latest";
|
||||
hlint = "latest";
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -0,0 +1,53 @@
|
||||
pkgsSet:
|
||||
{ system
|
||||
, name ? "site"
|
||||
, src
|
||||
, websiteBuildInputs ? []
|
||||
}:
|
||||
let
|
||||
pkgs = pkgsSet.${system};
|
||||
builder = pkgs.haskellPackages.callCabal2nix "${name}" "${src}" { };
|
||||
haskell-env = pkgs.haskellPackages.ghcWithHoogle (
|
||||
hp: with hp;
|
||||
[ haskell-language-server cabal-install ] ++ builder.buildInputs
|
||||
);
|
||||
in rec {
|
||||
packages = {
|
||||
inherit builder;
|
||||
website = pkgs.stdenv.mkDerivation {
|
||||
inherit name src;
|
||||
buildInputs = [ builder ] ++ websiteBuildInputs;
|
||||
LANG = "en_AU.UTF-8";
|
||||
LC_ALL = "en_AU.UTF-8";
|
||||
LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive";
|
||||
# don't look in caches for this; speeds things up a little
|
||||
allowSubstitutes = false;
|
||||
buildPhase = ''
|
||||
${name} build
|
||||
'';
|
||||
installPhase = ''
|
||||
mkdir -p $out/
|
||||
cp -R _site/* $out/
|
||||
'';
|
||||
dontStrip = true;
|
||||
};
|
||||
};
|
||||
defaultPackage = packages.website;
|
||||
devShell = pkgs.mkShell {
|
||||
name = "${name}-env";
|
||||
buildInputs = [ haskell-env ];
|
||||
|
||||
shellHook = ''
|
||||
export HAKYLL_ENV="development"
|
||||
export HIE_HOOGLE_DATABASE="${haskell-env}/share/doc/hoogle/default.hoo"
|
||||
export NIX_GHC="${haskell-env}/bin/ghc"
|
||||
export NIX_GHCPKG="${haskell-env}/bin/ghc-pkg"
|
||||
export NIX_GHC_DOCDIR="${haskell-env}/share/doc/ghc/html"
|
||||
export NIX_GHC_LIBDIR=$( $NIX_GHC --print-libdir )
|
||||
'';
|
||||
};
|
||||
defaultApp = {
|
||||
type = "app";
|
||||
program = "${builder}/bin/${name}";
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue