nomad-driver-nix2/example/example-batch.hcl

70 lines
2.1 KiB
HCL

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"
}
}
}
}