Skip to content

Quick start

Installation

The recommended way to install now is via Nix, although it's also available on crates.io.

Tip

To try it out without installing, you can use nix run github:EpicEric/now.

now comes with a binary cache as well. If using a multi-user Nix installation, add the following to /etc/nix/nix.conf:

extra-substituters = https://cache.eric.dev.br
extra-trusted-public-keys = cache.eric.dev.br-1:szEyq5LCjxDCUHYSRaSFU5HdHmR7QlT+FRG3tB9QtpE=

NixOS installation

tack add now github:EpicEric/now --fetch
# configuration.nix
let
  inputs = import ./.tack;
in
{
  # ...
  nix.settings = {
    extra-substituters = [ "https://cache.eric.dev.br" ];
    extra-trusted-public-keys = [
      "cache.eric.dev.br-1:szEyq5LCjxDCUHYSRaSFU5HdHmR7QlT+FRG3tB9QtpE="
    ];
  };
  environment.systemPackages = [
    (import inputs.now { })
  ];
}
npins add github EpicEric now
# configuration.nix
let
  sources = import ./npins;
in
{
  # ...
  nix.settings = {
    extra-substituters = [ "https://cache.eric.dev.br" ];
    extra-trusted-public-keys = [
      "cache.eric.dev.br-1:szEyq5LCjxDCUHYSRaSFU5HdHmR7QlT+FRG3tB9QtpE="
    ];
  };
  environment.systemPackages = [
    (import sources.now { })
  ];
}
# flake.nix
{
  inputs = {
    # ...
    now.url = "github:EpicEric/now/main";
  };

  outputs =
    {
      nixpkgs,
      now,
      ...
    }@inputs:
    {
      nixosConfigurations."your-hostname" = nixpkgs.lib.nixosSystem {
        modules = [
          # ...
          ({ pkgs, ... }: {
            nix.settings = {
              extra-substituters = [ "https://cache.eric.dev.br" ];
              extra-trusted-public-keys = [
                "cache.eric.dev.br-1:szEyq5LCjxDCUHYSRaSFU5HdHmR7QlT+FRG3tB9QtpE="
              ];
            };
            environment.systemPackages = [
              now.packages.${pkgs.stdenv.hostPlatform.system}.default
            ];
          })
        ];
      };
    };
}

Quick start

To get started with now, you can initialize a basic workflow at now.nix in the current directory:

now init

Now run its default job:

now run

To get started with now in a Nix flake, add the following to your outputs:

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  };

  outputs =
    { nixpkgs, self, ... }:
    {
      # ...

      now = { runner, ... }: {
        inherit nixpkgs;
        default = [ "default" ];
        jobs.default = { pkgs, ... }: {
          steps = [
            {
              run = ''
                python3 -c 'print("Hello from now!")'
              '';
              path = [
                pkgs.python313
              ];
            }
          ];
        };
      };
    };
}

When you run now, specify the flake reference, and an optional attribute with #path.to.workflow (defaults to #now):

now run --flake .