add attic push functionality

This commit is contained in:
Lucy Hochkamp 2025-10-10 17:40:25 +02:00
parent 9ca574cb94
commit f982e37fe5
No known key found for this signature in database
8 changed files with 175 additions and 58 deletions

View file

@ -1,34 +1,47 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
nixpkgs,
self,
}: let
forAllSystems = fn:
builtins.foldl' (attrs: system: let
outputs = fn system;
outputNames = builtins.attrNames outputs;
in
builtins.foldl' (attrs: outName: let
existing = attrs.${outName} or {};
new = existing // {${system} = outputs.${outName};};
in
attrs // {${outName} = new;})
attrs
outputNames) {} ["x86_64-linux" "aarch64-linux"];
in
outputs =
{ nixpkgs
, rust-overlay
, self
,
}:
let
forAllSystems = fn:
builtins.foldl'
(attrs: system:
let
outputs = fn system;
outputNames = builtins.attrNames outputs;
in
builtins.foldl'
(attrs: outName:
let
existing = attrs.${outName} or { };
new = existing // { ${system} = outputs.${outName}; };
in
attrs // { ${outName} = new; })
attrs
outputNames)
{ } [ "x86_64-linux" "aarch64-linux" ];
in
{
overlays.default = final: prev: {
nix-ci = final.lib.flip final.callPackage {} ({
rustPlatform,
lib,
makeWrapper,
nix-eval-jobs,
}: let
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
in
nix-ci = final.lib.flip final.callPackage { } ({ rustPlatform
, lib
, makeWrapper
, nix-eval-jobs
,
}:
let
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
in
rustPlatform.buildRustPackage {
pname = cargoToml.package.name;
version = cargoToml.package.version;
@ -40,7 +53,7 @@
./Cargo.lock
];
};
nativeBuildInputs = [makeWrapper];
nativeBuildInputs = [ makeWrapper ];
cargoLock.lockFile = ./Cargo.lock;
preFixup = ''
wrapProgram "$out/bin/nix-ci" \
@ -49,13 +62,35 @@
});
};
}
// forAllSystems (system: let
// forAllSystems (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [self.overlays.default];
overlays = [
self.overlays.default
rust-overlay.overlays.default
(final: prev: {
inherit (prev.lixPackageSets.stable)
nixpkgs-review
nix-eval-jobs
nix-fast-build
colmena;
})
];
};
rust = pkgs.rust-bin.stable.latest.default.override {
extensions = [
"rust-src" # for rust-analyzer
"rust-analyzer"
];
};
in
{
devShells.default = pkgs.mkShell {
nativeBuildInputs = [ pkgs.nix-eval-jobs rust pkgs.attic-client ];
};
in {
devShells.default = import ./shell.nix {inherit pkgs;};
packages = {
default = pkgs.nix-ci;
nix-ci = pkgs.nix-ci;