A fork of attic a self-hostable Nix Binary Cache server
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 81 lines 2.3 kB view raw
1# Generates a script to bootstrap the Attic client with a substituter for 2# CI usage. Will be simplier when Attic is in cache.nixos.org. 3 4{ self 5, writeText 6, writeScript 7 8, substituter ? "https://staging.attic.rs/attic-ci" 9, trustedPublicKey ? "attic-ci:U5Sey4mUxwBXM3iFapmP0/ogODXywKLRNgRPQpEXxbo=" 10}: 11 12let 13 cacheNixosOrg = "https://cache.nixos.org"; 14 cacheNixosOrgKey = "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="; 15 16 bootstrapHeader = '' 17 let 18 maybeStorePath = if builtins ? langVersion && builtins.lessThan 1 builtins.langVersion 19 then builtins.storePath 20 else x: x; 21 mkFakeDerivation = attrs: outputs: 22 let 23 outputNames = builtins.attrNames outputs; 24 common = attrs // outputsSet // 25 { type = "derivation"; 26 outputs = outputNames; 27 all = outputsList; 28 }; 29 outputToAttrListElement = outputName: 30 { name = outputName; 31 value = common // { 32 inherit outputName; 33 outPath = maybeStorePath (builtins.getAttr outputName outputs); 34 }; 35 }; 36 outputsList = map outputToAttrListElement outputNames; 37 outputsSet = builtins.listToAttrs outputsList; 38 in outputsSet; 39 in 40 ''; 41 42 makeBootstrap = system: let 43 package = 44 if system == "x86_64-linux" then self.packages.${system}.attic-client-static 45 else self.packages.${system}.attic-client; 46 in '' 47 "${system}" = (mkFakeDerivation { 48 name = "${package.name}"; 49 system = "${system}"; 50 } { 51 out = "${package.out}"; 52 }).out; 53 ''; 54 55 bootstrapExpr = '' 56 { system ? builtins.currentSystem }: 57 ${bootstrapHeader} 58 { 59 ${makeBootstrap "x86_64-linux"} 60 ${makeBootstrap "aarch64-linux"} 61 ${makeBootstrap "x86_64-darwin"} 62 ${makeBootstrap "aarch64-darwin"} 63 }.''${system} 64 ''; 65 66 bootstrapScript = writeScript "install-attic-ci.sh" '' 67 #!/usr/bin/env bash 68 set -euo pipefail 69 expr=$(mktemp) 70 71 cleanup() { 72 rm -f "$expr" 73 } 74 75 cat >"$expr" <<'EOF' 76 ${bootstrapExpr} 77 EOF 78 79 nix-env --substituters "${substituter} ${cacheNixosOrg}" --trusted-public-keys "${trustedPublicKey} ${cacheNixosOrgKey}" -if "$expr" 80 ''; 81in bootstrapScript