80 lines
1.9 KiB
Plaintext
80 lines
1.9 KiB
Plaintext
local CacheVolume = "cache";
|
|
|
|
local Cache(name, settings) = {
|
|
name: name,
|
|
image: "drillster/drone-volume-cache",
|
|
volumes: [ {
|
|
name: CacheVolume,
|
|
path: "/cache"
|
|
} ],
|
|
settings: settings + {
|
|
mount: ["/nix/store"]
|
|
}
|
|
};
|
|
|
|
local Pipeline(channel) = {
|
|
kind: "pipeline",
|
|
type: "docker",
|
|
name: channel,
|
|
// This is ignored by the drone-cli YAML translator, so unfortunately, it has
|
|
// to be copy-pasted into relevant steps.
|
|
environment: {
|
|
NIXPKGS_ALLOW_UNFREE: 1,
|
|
NUR_REPO: "xeals",
|
|
CACHIX_CACHE: "xeals",
|
|
CACHIX_SIGNING_KEY: { from_secret: "cachix_key" },
|
|
},
|
|
volumes: [ {
|
|
name: CacheVolume,
|
|
host: {
|
|
path: "/tmp/drone/cache"
|
|
}
|
|
} ],
|
|
steps: [
|
|
Cache("restore-nix-store", {
|
|
restore: true
|
|
}),
|
|
{
|
|
name: "build",
|
|
image: "nixos/nix",
|
|
commands: [
|
|
"nix-channel --add https://nixos.org/channels/" + channel + " nixos",
|
|
"nix-channel --update",
|
|
"nix-build ci.nix -A buildOutputs",
|
|
"nix eval -f default.nix 'lib'",
|
|
"nix eval -f default.nix 'modules'",
|
|
"nix eval -f default.nix 'overlays'"
|
|
],
|
|
environment: {
|
|
NIXPKGS_ALLOW_UNFREE: 1
|
|
}
|
|
},
|
|
{
|
|
name: "deploy",
|
|
image: "nixpkgs/cachix",
|
|
commands: [
|
|
'nix-build ci.nix -A cacheOutputs | cachix push "${CACHIX_CACHE}"'//,
|
|
// 'if [[ "cron" != "${DRONE_BUILD_EVENT}" && -z "${DRONE_PULL_REQUEST}" && "master" = "${DRONE_BRANCH}" ]]; then
|
|
// curl -XPOST "https://nur-update.herokuapp.com/update?repo=${NUR_REPO}"; fi'
|
|
],
|
|
environment: {
|
|
NIXPKGS_ALLOW_UNFREE: 1,
|
|
NUR_REPO: "xeals",
|
|
CACHIX_CACHE: "xeals",
|
|
CACHIX_SIGNING_KEY: { from_secret: "cachix_key" },
|
|
},
|
|
},
|
|
Cache("save-nix-store", {
|
|
rebuild: true
|
|
}) + {
|
|
when: { status: [ "success", "failure" ] }
|
|
},
|
|
]
|
|
};
|
|
|
|
[
|
|
Pipeline("nixpkgs-unstable"),
|
|
Pipeline("nixos-unstable"),
|
|
Pipeline("nixos-20.03"),
|
|
]
|