hercules-ci / arion

Run docker-compose with help from Nix/NixOS
Apache License 2.0
631 stars 47 forks source link

Current documentation doesn't seem to work, gives error "project.name" is used but not defined. #166

Open sumdog opened 1 year ago

sumdog commented 1 year ago

Is the following the correct/current documentation? I'm currently using VoidLinux and nix from the package manager. nix, nix-shell and nix-env all return 2.10.3 for --version.

I created the following shell.nix (the only part not in the documentation):

let
  # nixos-22.05 / https://status.nixos.org/
  pkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/d86a4619b7e80bddb6c01bc01a954f368c56d1df.tar.gz") {};
  arion = import (fetchTarball "https://github.com/hercules-ci/arion/tarball/master") {};

  shellDeps = with pkgs; [
    bash arion.arion
  ];
  in
  pkgs.mkShell {
    buildInputs = shellDeps;
    shellHook = ''
      export TEST="foo"
    '';
}

Per the documentation, arion-pkgs.nix only contains the single line import <nixpkgs> { system = "x86_64-linux"; }. My arion-compose.nix contains the stock file in the documentation:

{ pkgs, ... }:
{
  config.services = {

    webserver = {
      service.useHostStore = true;
      service.command = [ "sh" "-c" ''
                  cd "$$WEB_ROOT"
                  ${pkgs.python3}/bin/python -m http.server
                '' ];
      service.ports = [
        "8000:8000" # host:container
      ];
      service.environment.WEB_ROOT = "${pkgs.nix.doc}/share/doc/nix/manual";
    };
  };
}

If I run nix-shell followed by arion up within the shell, I get the following:

nix-shell:~/certificates]$ arion up
error: The option `project.name' is used but not defined.
(use '--show-trace' to show detailed location information)

And the full stack trace looks like the following:

[nix-shell:~/certificates]$ arion up
error: The option `project.name' is used but not defined.
(use '--show-trace' to show detailed location information)

[nix-shell:~/certificates]$ arion --show-trace up
error: The option `project.name' is used but not defined.

       … while evaluating the attribute 'mergedValue'

       at /nix/store/hjxd6dd89ky8whv01ld0s5s85hgmpkk3-nixpkgs/nixpkgs/lib/modules.nix:753:5:

          752|     # Type-check the remaining definitions, and merge them. Or throw if no definitions.
          753|     mergedValue =
             |     ^
          754|       if isDefined then

       … while evaluating the option `project.name':

       … while evaluating the attribute 'value'

       at /nix/store/hjxd6dd89ky8whv01ld0s5s85hgmpkk3-nixpkgs/nixpkgs/lib/modules.nix:719:9:

          718|     in warnDeprecation opt //
          719|       { value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value;
             |         ^
          720|         inherit (res.defsFinal') highestPrio;

       … while evaluating anonymous lambda

       at /nix/store/hjxd6dd89ky8whv01ld0s5s85hgmpkk3-nixpkgs/nixpkgs/lib/modules.nix:268:72:

          267|           # For definitions that have an associated option
          268|           declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options;
             |                                                                        ^
          269|

       … from call site

       at /nix/store/hjxd6dd89ky8whv01ld0s5s85hgmpkk3-nixpkgs/nixpkgs/lib/attrsets.nix:401:20:

          400|               then recurse (path ++ [name]) value
          401|               else f (path ++ [name]) value;
             |                    ^
          402|         in mapAttrs g;

       … while evaluating 'g'
...
...
...(and it goes on for a bit)

Is something wrong with my shell.nix file in the way I pull in arion, or is the documentation incorrect?