switch formatting to nixpkgs-fmt

This commit is contained in:
Bryton Hall 2023-07-07 22:01:34 -04:00
parent 3598716c73
commit 2712e89716
65 changed files with 4839 additions and 5222 deletions

193
flake.nix
View file

@ -11,57 +11,50 @@
};
};
outputs = inputs @ {self, ...}:
(inputs.flake-utils.lib.eachDefaultSystem (
system: let
outputs = inputs @ { self, ... }:
(inputs.flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [self.overlays.default];
overlays = [ self.overlays.default ];
config.allowUnsupportedSystem = true;
};
inherit (pkgs) lib;
kubenix = {
lib = import ./lib {inherit lib pkgs;};
lib = import ./lib { inherit lib pkgs; };
evalModules = self.evalModules.${system};
modules = self.nixosModules.kubenix;
};
# evalModules with same interface as lib.evalModules and kubenix as
# special argument
evalModules = attrs @ {
module ? null,
modules ? [module],
...
}: let
lib' = lib.extend (lib: _self: import ./lib/upstreamables.nix {inherit lib pkgs;});
attrs' = builtins.removeAttrs attrs ["module"];
in
evalModules = attrs @ { module ? null, modules ? [ module ], ... }:
let
lib' = lib.extend (lib: _self: import ./lib/upstreamables.nix { inherit lib pkgs; });
attrs' = builtins.removeAttrs attrs [ "module" ];
in
lib'.evalModules (lib.recursiveUpdate
{
modules =
modules
++ [
{
config._module.args = {
inherit pkgs;
name = "default";
};
}
];
modules = modules ++ [{
config._module.args = {
inherit pkgs;
name = "default";
};
}];
specialArgs = {
inherit kubenix;
inherit pkgs;
};
}
attrs');
in {
in
{
inherit evalModules pkgs;
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
# extra tools
dive
fd
k9s
@ -81,103 +74,93 @@
'';
};
formatter =
(inputs.treefmt.lib.evalModule pkgs {
projectRootFile = "flake.nix";
programs = {
alejandra.enable = true;
black.enable = true;
prettier.enable = true;
shfmt.enable = true;
};
settings.global.excludes = [
"docs/themes/*"
"docs/layouts/*"
"modules/generated/*"
];
})
.config
.build
.wrapper;
formatter = (inputs.treefmt.lib.evalModule pkgs {
projectRootFile = "flake.nix";
programs = {
nixpkgs-fmt.enable = true;
black.enable = true;
prettier.enable = true;
shfmt.enable = true;
};
settings.global.excludes = [
"docs/themes/*"
"docs/layouts/*"
"modules/generated/*"
];
}).config.build.wrapper;
apps = {
docs = {
type = "app";
program =
(pkgs.writeShellScript "gen-docs" ''
set -eo pipefail
program = (pkgs.writeShellScript "gen-docs" ''
set -eo pipefail
# generate json object of module options
nix build '.#docs' -o ./docs/data/options.json
# generate json object of module options
nix build '.#docs' -o ./docs/data/options.json
# remove all old module pages
rm ./docs/content/modules/[!_]?*.md || true
# remove all old module pages
rm ./docs/content/modules/[!_]?*.md || true
# create a page for each module in hugo
for mod in ${builtins.toString (builtins.attrNames self.nixosModules.kubenix)}; do
[[ $mod == "base" ]] && mod=kubenix
[[ $mod == "k8s" ]] && mod=kubernetes
[[ $mod == "submodule"* ]] && continue
echo "&nbsp; {{< options >}}" > ./docs/content/modules/$mod.md
done
# create a page for each module in hugo
for mod in ${builtins.toString (builtins.attrNames self.nixosModules.kubenix)}; do
[[ $mod == "base" ]] && mod=kubenix
[[ $mod == "k8s" ]] && mod=kubernetes
[[ $mod == "submodule"* ]] && continue
echo "&nbsp; {{< options >}}" > ./docs/content/modules/$mod.md
done
# build the site
cd docs && ${pkgs.hugo}/bin/hugo "$@"
'')
.outPath;
# build the site
cd docs && ${pkgs.hugo}/bin/hugo "$@"
'').outPath;
};
generate = {
type = "app";
program =
(pkgs.writeShellScript "gen-modules" ''
set -eo pipefail
dir=./modules/generated
program = (pkgs.writeShellScript "gen-modules" ''
set -eo pipefail
dir=./modules/generated
rm -rf $dir
mkdir $dir
nix build '.#generate-k8s'
cp ./result/* $dir/
rm -rf $dir
mkdir $dir
nix build '.#generate-k8s'
cp ./result/* $dir/
rm result
'')
.outPath;
rm result
'').outPath;
};
};
packages =
{
inherit (pkgs) kubernetes kubectl;
default = pkgs.callPackage ./pkgs/kubenix.nix {
inherit (self.packages.${system});
evalModules = self.evalModules.${system};
};
docs = import ./docs {
inherit pkgs;
options =
(self.evalModules.${system} {
modules = builtins.attrValues (builtins.removeAttrs
# the submodules module currently doesn't evaluate:
# error: No module found name/latest
# not sure how important that documentation is a this time
self.nixosModules.kubenix ["submodule" "submodules"]);
})
.options;
};
}
// pkgs.lib.attrsets.mapAttrs' (name: value: pkgs.lib.attrsets.nameValuePair "generate-${name}" value)
(builtins.removeAttrs (pkgs.callPackage ./pkgs/generators {}) ["override" "overrideDerivation"]);
packages = {
inherit (pkgs) kubernetes kubectl;
default = pkgs.callPackage ./pkgs/kubenix.nix {
inherit (self.packages.${system});
evalModules = self.evalModules.${system};
};
docs = import ./docs {
inherit pkgs;
options = (self.evalModules.${system} {
modules = builtins.attrValues (builtins.removeAttrs
# the submodules module currently doesn't evaluate:
# error: No module found name/latest
# not sure how important that documentation is a this time
self.nixosModules.kubenix [ "submodule" "submodules" ]);
}).options;
};
}
// pkgs.lib.attrsets.mapAttrs' (name: value: pkgs.lib.attrsets.nameValuePair "generate-${name}" value)
(builtins.removeAttrs (pkgs.callPackage ./pkgs/generators { }) [ "override" "overrideDerivation" ]);
checks = let
wasSuccess = suite:
if suite.success
then pkgs.runCommandNoCC "testing-suite-config-assertions-for-${suite.name}-succeeded" {} "echo success > $out"
else pkgs.runCommandNoCC "testing-suite-config-assertions-for-${suite.name}-failed" {} "exit 1";
examples = import ./docs/content/examples;
mkK8STests = attrs:
(import ./tests {inherit evalModules;})
({registry = "docker.io/gatehub";} // attrs);
in
checks =
let
wasSuccess = suite:
if suite.success
then pkgs.runCommandNoCC "testing-suite-config-assertions-for-${suite.name}-succeeded" { } "echo success > $out"
else pkgs.runCommandNoCC "testing-suite-config-assertions-for-${suite.name}-failed" { } "exit 1";
examples = import ./docs/content/examples;
mkK8STests = attrs:
(import ./tests { inherit evalModules; })
({ registry = "docker.io/gatehub"; } // attrs);
in
{
# TODO: access "success" derivation with nice testing utils for nice output
testing = wasSuccess examples.testing.config.testing;
@ -185,7 +168,7 @@
// builtins.listToAttrs (builtins.map
(v: {
name = "test-k8s-${builtins.replaceStrings ["."] ["_"] v}";
value = wasSuccess (mkK8STests {k8sVersion = v;});
value = wasSuccess (mkK8STests { k8sVersion = v; });
})
(import ./versions.nix).versions);
}