diff options
Diffstat (limited to 'default.nix')
-rw-r--r-- | default.nix | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/default.nix b/default.nix index 9ce1e8a..b6e85bd 100644 --- a/default.nix +++ b/default.nix @@ -1,35 +1,40 @@ let pkgs = import <nixpkgs> {}; + rootSrc = pkgs.nix-gitignore.gitignoreSource [] ./.; + baseTask = pkgs.stdenv.mkDerivation { + name = "dotfiles-task"; + src = rootSrc; + buildInputs = []; + phases = "unpackPhase buildPhase"; + buildPhase = '' + echo "ERROR: base task buildPhase not overriden." + exit 1 + ''; + }; in with pkgs; with pkgs.stdenv; rec { subtasks = rec { - shellcheck = mkDerivation rec { - name = "dotfiles-shellcheck"; - src = ./.; - phases = "unpackPhase buildPhase"; - buildInputs = [ pkgs.shellcheck ]; + shellcheck = baseTask.overrideAttrs(baseAttrs: { + name = "${baseAttrs.name}-shellcheck"; + buildInputs = baseAttrs.buildInputs ++ [ pkgs.shellcheck ]; buildPhase = '' export SHELLCHECK_OPTS="-e SC1090 -e SC1091 -e SC2139" ignored='(encrypted|os-installation.sh|notmuch-post.sh)' find . -type f -name '*.sh' | grep -E -v $ignored | xargs shellcheck touch $out ''; - }; - fixme = mkDerivation { - name = "dotfiles-fixme"; - src = ./.; - phases = "unpackPhase buildPhase"; - buildInputs = [ pkgs.ag ]; + }); + fixme = baseTask.overrideAttrs(baseAttrs: { + name = "${baseAttrs.name}-fixme"; + buildInputs = baseAttrs.buildInputs ++ [ ag ]; buildPhase = '' ag FIXME --ignore default.nix || { touch $out } ''; - }; + }); }; - test = mkDerivation rec { - name = "dotfiles-test"; - src = ./.; - phases = "unpackPhase buildPhase"; + test = baseTask.overrideAttrs(baseAttrs: rec { + name = "${baseAttrs.name}-test"; buildInputs = [ subtasks.shellcheck subtasks.fixme @@ -42,5 +47,5 @@ in with pkgs; with pkgs.stdenv; rec { echo "All tests passed!" touch $out ''; - }; + }); } |