2025-10-01 19:51:55 -05:00
|
|
|
{
|
|
|
|
|
description = "Website Environment";
|
|
|
|
|
|
|
|
|
|
inputs = {
|
|
|
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
2025-10-03 21:15:42 -05:00
|
|
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.05";
|
2025-10-01 19:51:55 -05:00
|
|
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
|
|
|
|
mkElmDerivation.url = "github:jeslie0/mkElmDerivation";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
outputs =
|
|
|
|
|
inputs:
|
|
|
|
|
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
|
|
|
|
|
imports = [ inputs.treefmt-nix.flakeModule ];
|
|
|
|
|
|
|
|
|
|
perSystem =
|
|
|
|
|
{ pkgs, lib, ... }:
|
|
|
|
|
let
|
|
|
|
|
hp = pkgs.haskellPackages;
|
|
|
|
|
backend = hp.callCabal2nix "backend" ./backend { };
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
devShells.default = hp.shellFor {
|
|
|
|
|
nativeBuildInputs = builtins.attrValues {
|
|
|
|
|
inherit (pkgs)
|
|
|
|
|
nil
|
|
|
|
|
stylish-haskell
|
|
|
|
|
ghc
|
|
|
|
|
vscode-langservers-extracted
|
2025-10-03 21:15:42 -05:00
|
|
|
nixfmt-rfc-style
|
2025-10-01 19:51:55 -05:00
|
|
|
;
|
|
|
|
|
inherit (hp)
|
|
|
|
|
cabal-install
|
|
|
|
|
cabal-gild
|
|
|
|
|
haskell-language-server
|
|
|
|
|
hlint
|
|
|
|
|
fourmolu
|
|
|
|
|
;
|
2025-11-24 19:29:09 -06:00
|
|
|
inherit (inputs.nixpkgs-stable.legacyPackages.${pkgs.stdenv.hostPlatform.system}.elmPackages)
|
2025-10-01 19:51:55 -05:00
|
|
|
elm
|
|
|
|
|
elm-format
|
|
|
|
|
elm-land
|
|
|
|
|
elm-language-server
|
|
|
|
|
elm-review
|
|
|
|
|
elm-test
|
|
|
|
|
;
|
|
|
|
|
};
|
|
|
|
|
packages = _: [ backend ];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
packages =
|
|
|
|
|
let
|
|
|
|
|
pkgs' = pkgs.extend inputs.mkElmDerivation.overlays.mkElmDerivation;
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
websiteBackend = backend;
|
|
|
|
|
|
|
|
|
|
websiteFrontend = pkgs'.mkElmDerivation {
|
|
|
|
|
name = "website";
|
|
|
|
|
src = ./frontend;
|
|
|
|
|
nativeBuildInputs = builtins.attrValues {
|
2025-11-24 19:29:09 -06:00
|
|
|
inherit (inputs.nixpkgs-stable.legacyPackages.${pkgs.stdenv.hostPlatform.system}.elmPackages)
|
2025-10-01 19:51:55 -05:00
|
|
|
elm
|
|
|
|
|
elm-land
|
|
|
|
|
;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
|
${lib.getExe pkgs'.elm-land} build
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
|
mkdir -p "$out"
|
|
|
|
|
cp -r dist/* "$out/"
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
treefmt = {
|
|
|
|
|
programs = {
|
|
|
|
|
cabal-fmt.enable = true;
|
|
|
|
|
deadnix.enable = true;
|
|
|
|
|
hlint.enable = true;
|
|
|
|
|
nixfmt.enable = true;
|
|
|
|
|
fourmolu.enable = true;
|
|
|
|
|
statix.enable = true;
|
|
|
|
|
typstyle.enable = true;
|
|
|
|
|
yamlfmt.enable = true;
|
|
|
|
|
};
|
|
|
|
|
backendRootFile = "flake.nix";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
systems = [ "x86_64-linux" ];
|
|
|
|
|
};
|
|
|
|
|
}
|