{ description = "Nix utilities to manage device firmware"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/release-25.05"; flake-parts.url = "github:hercules-ci/flake-parts"; systems.url = "github:nix-systems/default"; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{self, ... }: inputs.flake-parts.lib.mkFlake { inherit inputs self; } { systems = import inputs.systems; flake.overlays.default = import ./overlays; # flake.flakeModules.default = ./modules; imports = [ inputs.treefmt-nix.flakeModule ./modules ./devices ]; perSystem = { pkgs, config, system, ... }: { _module.args.pkgs = import inputs.nixpkgs { inherit system; overlays = [ self.overlays.default ]; }; packages = { inherit (pkgs) qmk_firmware qmk_firmware-modelf; }; treefmt = { programs = { clang-format.enable = true; nixfmt = { enable = true; strict = true; }; }; }; devShells.default = pkgs.mkShellNoCC { inputsFrom = [ config.treefmt.build.devShell ]; nativeBuildInputs = with pkgs; [ nixd statix deadnix ]; }; }; }; }