aboutsummaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2019-05-25 13:33:19 -0300
committerEuAndreh <eu@euandre.org>2019-05-25 13:33:19 -0300
commitf1792cb9e6e5557f0983997a011defaa1f19e639 (patch)
treef0751cf27e3c1cc19f2b1ac89703767a4c2ab597 /default.nix
parentFormat vps.tf (diff)
downloadtoph-f1792cb9e6e5557f0983997a011defaa1f19e639.tar.gz
toph-f1792cb9e6e5557f0983997a011defaa1f19e639.tar.xz
Add lint checks and a pipeline to check using Nix
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..d43e113
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,93 @@
+let
+ pkgsUnstable = import <nixpkgs> { };
+ pkgsPinned = import (pkgsUnstable.fetchzip {
+ url = "https://github.com/NixOS/nixpkgs/archive/18.03.zip";
+ sha256 = "0hk4y2vkgm1qadpsm4b0q1vxq889jhxzjx3ragybrlwwg54mzp4f";
+ }) { };
+ pkgs = pkgsUnstable;
+
+ rootSrc = pkgs.nix-gitignore.gitignoreSource [] ./.;
+ nixfmt = import (builtins.fetchTarball
+ "https://github.com/serokell/nixfmt/archive/master.tar.gz") { };
+
+ baseTask = pkgs.stdenv.mkDerivation {
+ name = "vps-task";
+ src = rootSrc;
+ phases = "unpackPhase buildPhase";
+ buildInputs = [];
+ buildPhase = ''
+ echo "ERROR: base task buildPhase not overriden."
+ exit 1
+ '';
+ };
+in with pkgs;
+with pkgs.stdenv; rec {
+ subtasks = rec {
+ shellCheck = baseTask.overrideAttrs(baseAttrs: {
+ name = "${baseAttrs.name}-shellcheck";
+ buildInputs = [ shellcheck ];
+ buildPhase = ''
+ find . -type f -name '*.sh' | xargs shellcheck
+ touch $out
+ '';
+ });
+ fixme = baseTask.overrideAttrs (baseAttrs: {
+ name = "${baseAttrs.name}-fixme";
+ buildInputs = [ag];
+ buildPhase = ''
+ ag FIXME --ignore default.nix|| {
+ touch $out
+ }
+ '';
+ });
+ # docker lint
+ formatTerraform = baseTask.overrideAttrs (baseAttrs: {
+ name = "${baseAttrs.name}-format-terraform";
+ buildInputs = baseAttrs.buildInputs ++ [nixfmt];
+ buildPhase = ''
+ terraform fmt -check=true -diff=true || {
+ echo "Terraform files are unformatted. To fix it, run:"
+ echo " terraform fmt"
+ exit 1
+ }
+ touch $out
+ '';
+ });
+ formatNix = baseTask.overrideAttrs (baseAttrs: {
+ name = "${baseAttrs.name}-nixfmt";
+ buildInputs = baseAttrs.buildInputs ++ [nixfmt];
+ buildPhase = ''
+ diff <(nixfmt < default.nix) default.nix || {
+ echo "The default.nix is unformatted. To fix it, run:"
+ echo " nixfmt default.nix"
+ exit 1
+ }
+ touch $out
+ '';
+ });
+ };
+ test = baseTask.overrideAttrs (baseAttrs: rec {
+ name = "${baseAttrs.name}-test";
+ buildInputs = [
+ subtasks.shellcheck
+ subtasks.fixme
+ subtasks.formatTerraform
+ subtasks.formatNix
+ ];
+ buildPhase = ''
+ echo "Ran tests for:"
+ for d in ${builtins.toString buildInputs}; do
+ echo " $d"
+ done
+ echo "All tests passed!"
+ touch $out
+ '';
+ });
+ shell = mkShell rec {
+ name = "vps-shell";
+ buildInputs = [
+ nixfmt
+ terraform-full
+ ];
+ };
+}