{ description = "Subbit.xyz : Cardano's featherweight L2"; inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; git-hooks-nix.url = "github:cachix/git-hooks.nix"; git-hooks-nix.inputs.nixpkgs.follows = "nixpkgs"; treefmt-nix.url = "github:numtide/treefmt-nix"; treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; aiken.url = "github:waalge/aiken/waalge/fix-nix-build"; }; outputs = inputs @ {flake-parts, ...}: flake-parts.lib.mkFlake {inherit inputs;} { imports = [ inputs.git-hooks-nix.flakeModule inputs.treefmt-nix.flakeModule ]; systems = ["x86_64-linux" "aarch64-darwin"]; perSystem = { config, self', inputs', pkgs, system, ... }: { treefmt = { projectRootFile = "flake.nix"; flakeFormatter = true; programs = { prettier = { enable = true; settings = { printWidth = 80; proseWrap = "always"; }; }; alejandra.enable = true; elm-format.enable = true; }; }; pre-commit.settings.hooks = { treefmt.enable = true; aiken = { enable = true; name = "aiken"; description = "Run aiken's formatter on ./aik"; files = "\\.ak"; entry = "${inputs'.aiken.packages.aiken}/bin/aiken fmt ./aik"; }; }; devShells.default = let subbit = pkgs.writeShellScriptBin "subbit" '' #!/usr/bin/env bash node out/index.js $@ ''; in pkgs.mkShell { nativeBuildInputs = [ config.treefmt.build.wrapper ]; shellHook = '' ${config.pre-commit.installationScript} echo 1>&2 "Welcome to the development shell!" export alias subbit="node out/index.js " ''; packages = [ pkgs.just inputs'.aiken.packages.aiken pkgs.elmPackages.elm pkgs.elmPackages.nodejs pkgs.elmPackages.elm-language-server pkgs.elmPackages.elm-git-install pkgs.uglify-js pkgs.caddy pkgs.pnpm pkgs.typescript-language-server subbit ]; }; }; flake = {}; }; }