86 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
| local Cache(name, settings) = {
 | |
|   name: name,
 | |
|   image: "meltwater/drone-cache",
 | |
|   pull: true,
 | |
|   settings: {
 | |
|     backend: "filesystem",
 | |
|     cache_key: "{{ .Repo.Name }}",
 | |
|     archive_format: "gzip",
 | |
|     mount: [
 | |
|       "/nix/store"
 | |
|     ]
 | |
|   } + settings,
 | |
|   volumes: [
 | |
|     {
 | |
|       name: "cache",
 | |
|       path: "/tmp/cache"
 | |
|     }
 | |
|   ]
 | |
| };
 | |
| 
 | |
| 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: "cache",
 | |
|       temp: {}
 | |
|     }
 | |
|   ],
 | |
|   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"),
 | |
| ]
 |