aboutsummaryrefslogtreecommitdiff
path: root/example/example-batch.hcl
blob: 15635f96eefe756ffd53f60244377cb72f1dc2ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
job "nix2-example-batch" {
  datacenters = ["dc1"]
  type        = "batch"

  group "example" {
    # Simple example: how to run a binary from a Nixpkgs package
    # By default, this will use nixpkgs from github:nixos/nixpkgs/nixos-22.05
    # as a base system, as defined in the agent config file.
    # This could be overridden by setting nixpkgs = "another flake"
    # inside the config {} block
    task "nix-hello" {
      driver = "nix2"

      config {
        # Packages contains a list of Nix flakes to include in the environement.
        # Entries that start with # will be relative to nixpkgs.
        # Otherwise, they are flake names that are passed directly to Nix build
        packages = [
          "#hello"   # equivalent to "github:nixos/nixpkgs/nixos-22.05#hello"
        ]
        command = "hello"
      }
    }

    # This example show how to setup root CA certificates so that jobs
    # can do TLS connections 
    # Here, a Nix profile is built using packages curl and cacert from nixpkgs.
    # Because the cacert package is included, the ca-bundle.crt file is added to
    # /etc in that profile. Then, the nix2 driver binds all files from that
    # profile in the root directory, making ca-bundle.crt available directly under /etc.
    # Reference: see https://gist.github.com/CMCDragonkai/1ae4f4b5edeb021ca7bb1d271caca999
    task "nix-curl-ssl" {
      driver = "nix2"

      config {
        packages = [
          "#curl", "#cacert"
        ]
        command = "curl"
        args = [
          "https://nixos.org"
        ]
      }
      env = {
        SSL_CERT_FILE = "/etc/ssl/certs/ca-bundle.crt"
      }
    }

    # This example show how to use a flake defined from a file
    task "nix-hello-flake" {
      driver = "nix2"

      config {
        # Packages contains a list of Nix flakes to include in the environement.
        # Entries that start with # will be relative to nixpkgs.
        # Otherwise, they are flake names that are passed directly to Nix build
        packages = [
          ".#hello"
        ]
        command = "hello"
      }

      template {
        data = file("flake.nix")
        destination = "flake.nix"
      }
    }
  }
}