174 lines
4.1 KiB
Nix
174 lines
4.1 KiB
Nix
{
|
|
system ? builtins.currentSystem,
|
|
}:
|
|
|
|
with import ./nix/common.nix;
|
|
|
|
let
|
|
pkgs = import pkgsSrc {
|
|
inherit system;
|
|
overlays = [ cargo2nixOverlay ];
|
|
};
|
|
kaniko = (import ./nix/kaniko.nix) pkgs;
|
|
manifest-tool = (import ./nix/manifest-tool.nix) pkgs;
|
|
winscp = (import ./nix/winscp.nix) pkgs;
|
|
|
|
in
|
|
{
|
|
/* --- Rust Shell ---
|
|
* Use it to compile Garage
|
|
*/
|
|
rust = pkgs.mkShell {
|
|
nativeBuildInputs = [
|
|
#pkgs.rustPlatform.rust.rustc
|
|
pkgs.rustPlatform.rust.cargo
|
|
#pkgs.clippy
|
|
pkgs.rustfmt
|
|
#pkgs.perl
|
|
#pkgs.protobuf
|
|
#pkgs.pkg-config
|
|
#pkgs.openssl
|
|
pkgs.file
|
|
#cargo2nix.packages.x86_64-linux.cargo2nix
|
|
];
|
|
};
|
|
|
|
/* --- Integration shell ---
|
|
* Use it to test Garage with common S3 clients
|
|
*/
|
|
integration = pkgs.mkShell {
|
|
nativeBuildInputs = [
|
|
winscp
|
|
pkgs.s3cmd
|
|
pkgs.awscli2
|
|
pkgs.minio-client
|
|
pkgs.rclone
|
|
pkgs.socat
|
|
pkgs.psmisc
|
|
pkgs.which
|
|
pkgs.openssl
|
|
pkgs.curl
|
|
pkgs.jq
|
|
];
|
|
};
|
|
|
|
/* --- Release shell ---
|
|
* A shell built to make releasing easier
|
|
*/
|
|
release = pkgs.mkShell {
|
|
shellHook = ''
|
|
function refresh_toolchain {
|
|
pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
|
|
nix copy \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \
|
|
$(nix-store -qR \
|
|
$(nix-build --no-build-output --no-out-link nix/toolchain.nix))
|
|
rm /tmp/nix-signing-key.sec
|
|
}
|
|
|
|
function refresh_cache {
|
|
pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
|
|
for attr in clippy.amd64 test.amd64 pkgs.{amd64,i386,arm,arm64}.{debug,release}; do
|
|
echo "Updating cache for ''${attr}"
|
|
derivation=$(nix-instantiate --attr ''${attr})
|
|
nix copy -j8 \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \
|
|
$(nix-store -qR ''${derivation%\!bin})
|
|
done
|
|
rm /tmp/nix-signing-key.sec
|
|
}
|
|
|
|
function refresh_flake_cache {
|
|
pass show deuxfleurs/nix_priv_key > /tmp/nix-signing-key.sec
|
|
for attr in packages.x86_64-linux.default; do
|
|
echo "Updating cache for ''${attr}"
|
|
derivation=$(nix path-info --derivation ".#''${attr}")
|
|
nix copy -j8 \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/tmp/nix-signing-key.sec' \
|
|
$(nix-store -qR ''${derivation})
|
|
done
|
|
rm /tmp/nix-signing-key.sec
|
|
}
|
|
|
|
function to_s3 {
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
./result-bin/bin/garage \
|
|
s3://garagehq.deuxfleurs.fr/_releases/''${DRONE_TAG:-$DRONE_COMMIT}/''${TARGET}/garage
|
|
}
|
|
|
|
function to_docker {
|
|
executor \
|
|
--force \
|
|
--customPlatform="''${DOCKER_PLATFORM}" \
|
|
--destination "''${CONTAINER_NAME}:''${CONTAINER_TAG}" \
|
|
--context dir://`pwd` \
|
|
--verbosity=debug
|
|
}
|
|
|
|
function multiarch_docker {
|
|
manifest-tool push from-spec <(cat <<EOF
|
|
image: dxflrs/garage:''${CONTAINER_TAG}
|
|
manifests:
|
|
-
|
|
image: dxflrs/arm64_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: arm64
|
|
os: linux
|
|
-
|
|
image: dxflrs/amd64_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: amd64
|
|
os: linux
|
|
-
|
|
image: dxflrs/386_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: 386
|
|
os: linux
|
|
-
|
|
image: dxflrs/arm_garage:''${CONTAINER_TAG}
|
|
platform:
|
|
architecture: arm
|
|
os: linux
|
|
EOF
|
|
)
|
|
}
|
|
|
|
function refresh_index {
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 ls \
|
|
--recursive \
|
|
s3://garagehq.deuxfleurs.fr/_releases/ \
|
|
> aws-list.txt
|
|
|
|
nix-build nix/build_index.nix
|
|
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
result/share/_releases.json \
|
|
s3://garagehq.deuxfleurs.fr/
|
|
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
result/share/_releases.html \
|
|
s3://garagehq.deuxfleurs.fr/
|
|
}
|
|
'';
|
|
nativeBuildInputs = [
|
|
pkgs.awscli2
|
|
kaniko
|
|
manifest-tool
|
|
];
|
|
};
|
|
}
|
|
|
|
|