Add nix flake checks

This commit is contained in:
Tristan Daniël Maat 2022-08-03 01:47:50 +01:00
parent d6cb49a0d1
commit 056acbf397
Signed by: tlater
GPG key ID: 49670FD774E43268
3 changed files with 74 additions and 3 deletions

View file

@ -25,7 +25,10 @@
}) })
]; ];
pkgs = import nixpkgs {inherit system overlays;}; pkgs = import nixpkgs {inherit system overlays;};
package = import ./nix/package.nix {inherit self nix-filter pkgs;}; package = import ./nix/package.nix {
inherit self pkgs;
nix-filter = nix-filter.lib;
};
in { in {
packages.${system} = rec { packages.${system} = rec {
tlaternet-templates = package.package; tlaternet-templates = package.package;
@ -35,5 +38,10 @@
devShells.${system} = { devShells.${system} = {
default = package.shell; default = package.shell;
}; };
checks.${system} = import ./nix/checks.nix {
inherit self pkgs;
nix-filter = nix-filter.lib;
};
}; };
} }

61
nix/checks.nix Normal file
View file

@ -0,0 +1,61 @@
{
self,
nix-filter,
pkgs,
}: let
inherit (builtins) removeAttrs;
inherit (pkgs.lib) concatStringsSep;
mkNodeCheck = {
buildInputs ? [],
checkCommands,
...
} @ attrs: let
extraAttrs = removeAttrs attrs ["buildInputs"];
in
self.packages.${pkgs.system}.default.overrideAttrs (old:
{
src = nix-filter {
root = self;
include = [
../package.json
../tsconfig.json
../.eslintrc.json
../.parcelrc
../.posthtmlrc
../.prettierrc
nix-filter.isDirectory
(nix-filter.matchExt "ts")
(nix-filter.matchExt "tsx")
(nix-filter.matchExt "html")
(nix-filter.matchExt "scss")
];
};
buildInputs = old.buildInputs ++ buildInputs;
checkPhase = ''
mkdir -p $out
${concatStringsSep "\n" (map (command: "${command} > $out/check.log") checkCommands)}
'';
doCheck = true;
dontBuild = true;
dontInstall = true;
}
// extraAttrs);
in {
style = mkNodeCheck {
checkCommands = [
"npm run style"
];
};
types = mkNodeCheck {
checkCommands = [
"npm run check"
];
};
}

View file

@ -3,6 +3,8 @@
nix-filter, nix-filter,
pkgs, pkgs,
}: let }: let
inherit (pkgs.lib) cleanSource;
node_modules_attrs = { node_modules_attrs = {
# Dependencies that should be available in the node build # Dependencies that should be available in the node build
buildInputs = with pkgs; [ buildInputs = with pkgs; [
@ -21,7 +23,7 @@ in {
package = pkgs.npmlock2nix.build { package = pkgs.npmlock2nix.build {
inherit buildInputs node_modules_attrs; inherit buildInputs node_modules_attrs;
src = pkgs.lib.cleanSource self; src = cleanSource self;
buildCommands = ["npm run build-dist"]; buildCommands = ["npm run build-dist"];
@ -33,7 +35,7 @@ in {
shell = pkgs.npmlock2nix.shell { shell = pkgs.npmlock2nix.shell {
inherit buildInputs node_modules_attrs; inherit buildInputs node_modules_attrs;
src = nix-filter.lib { src = nix-filter {
root = self; root = self;
include = [ include = [
"package.json" "package.json"