Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-11.0]
os: [ubuntu-latest, macos-11.0, macos-12]
package:
- solana-1_7-basic
- solana-1_8-basic
Expand Down Expand Up @@ -56,6 +56,7 @@ jobs:
- saber-devenv
- move-cli
- move-cli-address32
- goki-cli
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v17
Expand Down
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
# saber-overlay

Overlay containing Saber packages.
Overlay containing Nix packages used within the Saber ecosystem.

## Usage

### Nix flakes (recommended)

The following helper exports several packages:

- `env-anchor-idls` - environment which allows the use of the `anchor idl` command
- `env-anchor-build` - exposes tools to create verifiable Anchor builds
- `rust` - exposes Cargo/Rustc as used in CI

To use these in GitHub Actions, you may reference [the Saber Periphery GitHub actions](https://github.com/saber-hq/saber-periphery/blob/master/.github/workflows) and pick one of the below flake formats:

```nix
{
description = "My development environment.";
Expand All @@ -18,7 +26,7 @@ Overlay containing Saber packages.
}
```

or
#### Locking a specific Anchor/Solana version

```nix
{
Expand All @@ -30,6 +38,7 @@ or

outputs = { self, saber-overlay }: saber-overlay.lib.buildFlakeOutputs {
setupBuildTools = { pkgs }: {
solana = pkgs.solana-1_9;
anchor = pkgs.anchor-0_23_0;
};
};
Expand Down
17 changes: 0 additions & 17 deletions default.nix

This file was deleted.

149 changes: 145 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 12 additions & 24 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,52 +6,40 @@
rust-overlay.url = "github:oxalica/rust-overlay";
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
goki-cli.url = "github:GokiProtocol/goki-cli";
};

outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }:
outputs = { self, nixpkgs, rust-overlay, flake-utils, goki-cli }:
let
rustOverlay = import rust-overlay;

supportedSystems = flake-utils.lib.defaultSystems;

overlayBasic = import ./.;
overlayBasic = import ./overlay.nix;
overlayWithRust = final: prev:
(nixpkgs.lib.composeExtensions rustOverlay overlayBasic) final prev;

systemOutputs = flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ overlayWithRust ];
overlays = [
goki-cli.overlays.default
overlayWithRust
];
};
env = import ./env.nix { inherit pkgs; };
in
{
inherit (pkgs) saberPackages;
packages = (flake-utils.lib.flattenTree pkgs.saberPackages)
// (with pkgs.saberPackages; {
solana-1_7-basic = solana-1_7.solana-basic;
solana-1_7-full = solana-1_7.solana-full;

solana-1_8-basic = solana-1_8.solana-basic;
solana-1_8-full = solana-1_8.solana-full;

solana-1_9-basic = solana-1_9.solana-basic;
solana-1_9-full = solana-1_9.solana-full;

solana-1_10-basic = solana-1_10.solana-basic;
solana-1_10-full = solana-1_10.solana-full;

solana-basic = solana.solana-basic;
solana-full = solana.solana-full;
});
devShell = import ./shell.nix { inherit pkgs; };
defaultPackage = env;
packages = pkgs.saber;
devShells = {
default = import ./shell.nix { inherit pkgs; };
};
});
in
{
overlay = overlayWithRust;
overlays = {
default = overlayWithRust;
basic = overlayBasic;
withRust = overlayWithRust;
};
Expand Down
25 changes: 25 additions & 0 deletions overlay.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
final: prev:
let
mkRust = rust: {
inherit rust;
rustPlatform = prev.recurseIntoAttrs (prev.makeRustPlatform {
rustc = rust;
cargo = rust;
});
};
rustNightly = mkRust prev.rust-bin.nightly."2022-05-21".minimal;
rustStable = mkRust prev.rust-bin.stable."1.61.0".minimal;
saberPackages = (import ./packages {
inherit rustNightly rustStable;
pkgs = prev;
});

packages = saberPackages // (with saberPackages; {
inherit (prev) goki-cli;
});
in
packages // {
saber = packages // {
default = import ./env.nix { pkgs = prev // packages; };
};
}
Loading