{ description = "A simple base flake to be used as a starting point to avoid setting up everything for every flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; snowfall-lib = { url = "github:snowfallorg/lib"; inputs.nixpkgs.follows = "nixpkgs"; }; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs = { nixpkgs.follows = "nixpkgs"; }; }; }; outputs = { self, nixpkgs, snowfall-lib, treefmt-nix, }: let forEachSystem = systems: map: nixpkgs.lib.genAttrs systems map; in { lib.mkFlake = options@{ systems ? [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ], devShellPackages ? (pkgs: [ ]), treeFmtFile ? ./treefmt.nix, ... }: let snowfallOptions = builtins.removeAttrs options [ "systems" "devShellPackages" "treeFmtFile" ]; in ( snowfall-lib.lib.mkFlake snowfallOptions // (forEachSystem systems ( system: let pkgs = import nixpkgs { inherit system; }; treeFmtEval = treefmt-nix.lib.evalModule pkgs treeFmtFile; in { formatter = treeFmtEval.config.build.wrapper; checks = { fmt = treeFmtEval.config.build.check self; }; devShells.default = pkgs.mkShell { packages = [ pkgs.nixfmt-rfc-style pkgs.nixd ] ++ (devShellPackages pkgs); }; } )) ); }; }