2023-01-01 00:01:07 +00:00
|
|
|
{
|
|
|
|
description = "A Nix binary cache server";
|
|
|
|
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
2023-01-02 04:33:08 +00:00
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
2023-01-01 00:01:07 +00:00
|
|
|
|
|
|
|
flake-compat = {
|
|
|
|
url = "github:edolstra/flake-compat";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-01-02 04:33:08 +00:00
|
|
|
outputs = { self, nixpkgs, flake-utils, ... }: let
|
|
|
|
supportedSystems = flake-utils.lib.defaultSystems;
|
|
|
|
in flake-utils.lib.eachSystem supportedSystems (system: let
|
2023-01-01 00:01:07 +00:00
|
|
|
pkgs = import nixpkgs { inherit system; };
|
|
|
|
|
|
|
|
inherit (pkgs) lib;
|
|
|
|
in rec {
|
|
|
|
packages = {
|
|
|
|
default = packages.attic;
|
|
|
|
|
|
|
|
attic = pkgs.callPackage ./package.nix { };
|
|
|
|
attic-client = packages.attic.override { clientOnly = true; };
|
|
|
|
|
|
|
|
attic-server = let
|
|
|
|
attic-server = pkgs.callPackage ./package.nix {
|
|
|
|
crates = [ "attic-server" ];
|
|
|
|
};
|
|
|
|
in attic-server.overrideAttrs (old: {
|
|
|
|
pname = "attic-server";
|
|
|
|
|
|
|
|
CARGO_PROFILE_RELEASE_LTO = "fat";
|
|
|
|
CARGO_PROFILE_RELEASE_CODEGEN_UNITS = "1";
|
|
|
|
});
|
|
|
|
|
|
|
|
attic-server-image = pkgs.dockerTools.buildImage {
|
|
|
|
name = "attic-server";
|
|
|
|
tag = "main";
|
2023-01-02 03:59:02 +00:00
|
|
|
copyToRoot = [
|
|
|
|
# Minimal `/bin/sh` for `fly ssh console`
|
|
|
|
pkgs.busybox-sandbox-shell
|
|
|
|
packages.attic-server
|
|
|
|
];
|
2023-01-01 00:01:07 +00:00
|
|
|
config = {
|
|
|
|
Entrypoint = [ "${packages.attic-server}/bin/atticd" ];
|
|
|
|
Cmd = [ "--mode" "api-server" ];
|
|
|
|
Env = [
|
|
|
|
"SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
book = pkgs.callPackage ./book {
|
|
|
|
attic = packages.attic;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
devShells = {
|
|
|
|
default = pkgs.mkShell {
|
|
|
|
inputsFrom = with packages; [ attic book ];
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
|
|
rustfmt clippy
|
|
|
|
cargo-expand cargo-outdated cargo-edit
|
|
|
|
|
|
|
|
sqlite-interactive
|
|
|
|
|
|
|
|
editorconfig-checker
|
|
|
|
|
|
|
|
flyctl
|
|
|
|
] ++ (lib.optionals pkgs.stdenv.isLinux [
|
|
|
|
linuxPackages.perf
|
|
|
|
]);
|
|
|
|
|
|
|
|
NIX_PATH = "nixpkgs=${pkgs.path}";
|
|
|
|
RUST_SRC_PATH = "${pkgs.rustPlatform.rustcSrc}/library";
|
|
|
|
|
|
|
|
ATTIC_DISTRIBUTOR = "dev";
|
|
|
|
};
|
|
|
|
|
|
|
|
demo = pkgs.mkShell {
|
|
|
|
nativeBuildInputs = [
|
|
|
|
packages.default
|
|
|
|
];
|
|
|
|
|
|
|
|
shellHook = ''
|
|
|
|
>&2 echo
|
|
|
|
>&2 echo '🚀 Run `atticd` to get started!'
|
|
|
|
>&2 echo
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
devShell = devShells.default;
|
|
|
|
});
|
|
|
|
}
|