From 813210c64f6bd5af4b32aed598c58f5d3923467e Mon Sep 17 00:00:00 2001 From: Kaare Hoff Skovgaard Date: Sat, 5 Jul 2025 11:01:57 +0200 Subject: [PATCH] Add initial snowfall-lib and treefmt setup --- flake.nix | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++ treefmt.nix | 6 +++++ 2 files changed, 76 insertions(+) create mode 100644 flake.nix create mode 100644 treefmt.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..481938f --- /dev/null +++ b/flake.nix @@ -0,0 +1,70 @@ +{ + 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); + }; + } + )) + ); + }; +} diff --git a/treefmt.nix b/treefmt.nix new file mode 100644 index 0000000..225d12c --- /dev/null +++ b/treefmt.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + projectRootFile = "flake.nix"; + programs.nixfmt.enable = true; + programs.shfmt.enable = true; +}