diff --git a/all-modules.nix b/all-modules.nix index 2ecd28c4..03439a03 100644 --- a/all-modules.nix +++ b/all-modules.nix @@ -6,6 +6,7 @@ ./modules/darwinModules.nix ./modules/devShells.nix ./modules/flake.nix + ./modules/formatter.nix ./modules/legacyPackages.nix ./modules/moduleWithSystem.nix ./modules/nixosConfigurations.nix diff --git a/modules/formatter.nix b/modules/formatter.nix new file mode 100644 index 00000000..a63a9bab --- /dev/null +++ b/modules/formatter.nix @@ -0,0 +1,55 @@ +{ config, lib, flake-parts-lib, ... }: +let + inherit (lib) + filterAttrs + mapAttrs + mkOption + optionalAttrs + types + ; + inherit (flake-parts-lib) + mkSubmoduleOptions + mkPerSystemOption + ; +in +{ + options = { + flake = mkSubmoduleOptions { + formatter = mkOption { + type = types.lazyAttrsOf types.package; + default = { }; + description = '' + Per system package used by nix fmt. + ''; + }; + }; + + perSystem = mkPerSystemOption ({ config, ... }: { + _file = ./formatter.nix; + options = { + formatter = mkOption { + type = types.nullOr types.package; + default = null; + description = '' + A package used by nix fmt. + ''; + }; + }; + }); + }; + config = { + flake.formatter = + mapAttrs + (k: v: v.formatter) + (filterAttrs + (k: v: v.formatter != null) + config.allSystems + ); + + perInput = system: flake: + optionalAttrs (flake?formatter.${system}) { + formatter = flake.formatter.${system}; + }; + + }; +}