diff --git a/hix/default.nix b/hix/default.nix index 289a57654e..8867daa976 100644 --- a/hix/default.nix +++ b/hix/default.nix @@ -31,9 +31,16 @@ let flake|build|develop|run|profile) # Put the flake files for remote URLs in $HOME/.hix by default HIX_DIR="''${HIX_DIR:-$HOME/.hix}" + HIX_TMPDIR="$(mktemp -d)" + projectArgs="" while(($#)); do arg=$1 case $arg in + --projectArgs) + projectArgs="$2" + args+=(--override-input projectArgs "$HIX_TMPDIR") + shift + ;; --out-link|-o|--eval-store|--include|-I|--inputs-from|--expr|--file|-f|--keep|-k|--phase|--profile|--unset|-u) args+=("$arg" "$2") shift @@ -83,7 +90,7 @@ let fi # Make a temporary flake if we have not already mkdir -p $FLAKE - HIX_FLAKE="$(mktemp -d)/flake.nix" + HIX_FLAKE="$HIX_TMPDIR/flake.nix" sed 's|EVAL_SYSTEM|${pkgs.stdenv.hostPlatform.system}|' < ${hixProject}/flake.nix > $HIX_FLAKE if ! cmp $HIX_FLAKE $FLAKE/flake.nix &>/dev/null; then if [ -e $FLAKE/flake.lock ]; then @@ -95,6 +102,9 @@ let cp $HIX_FLAKE $FLAKE/flake.nix chmod +w $FLAKE/flake.nix fi + if [ "$projectArgs" != "" ]; then + printf %s "$projectArgs" > "$HIX_TMPDIR/projectArgs.nix" + fi nix $cmd "''${args[@]}" ;; init|init-hix) diff --git a/hix/empty-set/default.nix b/hix/empty-set/default.nix deleted file mode 100644 index 0967ef424b..0000000000 --- a/hix/empty-set/default.nix +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/hix/project/flake.nix b/hix/project/flake.nix index 5fbbed0aef..26641d1ed3 100644 --- a/hix/project/flake.nix +++ b/hix/project/flake.nix @@ -5,16 +5,21 @@ inputs.haskellNix.url = "github:input-output-hk/haskell.nix"; inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable"; inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs.projectArgs.url = "github:input-output-hk/empty-flake"; + inputs.projectArgs.flake = false; inputs.src.flake = false; - outputs = { self, src, nixpkgs, flake-utils, haskellNix }: + outputs = { self, src, nixpkgs, flake-utils, haskellNix, projectArgs }: flake-utils.lib.eachSystem [ "EVAL_SYSTEM" ] (system: let overlays = [ haskellNix.overlay (final: _prev: { hixProject = - final.haskell-nix.hix.project { + final.haskell-nix.hix.project ({ inherit src; - }; + } // ( + if builtins.pathExists (projectArgs + "/projectArgs.nix") + then import (projectArgs + "/projectArgs.nix") + else {})); }) ]; pkgs = import nixpkgs { inherit system overlays; inherit (haskellNix) config; };