nix-ota/flake.nix

71 lines
2.2 KiB
Nix
Raw Normal View History

{
description = "nix-ota open-source OTA updates for NixOS fleets";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
outputs = { self, nixpkgs }:
let
systems = [ "x86_64-linux" "aarch64-linux" ];
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system nixpkgs.legacyPackages.${system});
mkPkg = pkgs: pname:
let
subdir = {
"nix-ota-server" = "server";
"nix-ota-agent" = "agent";
"nix-ota-publisher" = "publisher";
}.${pname};
in pkgs.rustPlatform.buildRustPackage {
inherit pname;
version = "0.1.0";
src = ./.;
cargoLock.lockFile = ./Cargo.lock;
buildAndTestSubdir = "crates/${subdir}";
nativeBuildInputs = with pkgs; [ pkg-config ];
buildInputs = with pkgs; [ openssl ];
doCheck = false;
meta.license = pkgs.lib.licenses.mit;
};
in {
packages = forAllSystems (system: pkgs: {
nix-ota-server = mkPkg pkgs "nix-ota-server";
nix-ota-agent = mkPkg pkgs "nix-ota-agent";
nix-ota-publisher = mkPkg pkgs "nix-ota-publisher";
default = self.packages.${system}.nix-ota-server;
});
apps = forAllSystems (system: pkgs: {
server = {
type = "app";
program = "${self.packages.${system}.nix-ota-server}/bin/nix-ota-server";
};
agent = {
type = "app";
program = "${self.packages.${system}.nix-ota-agent}/bin/nix-ota-agent";
};
nix-ota = {
type = "app";
program = "${self.packages.${system}.nix-ota-publisher}/bin/nix-ota";
};
default = self.apps.${system}.server;
});
nixosModules = {
server = import ./nix/modules/server.nix self;
agent = import ./nix/modules/agent.nix self;
};
devShells = forAllSystems (system: pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [ cargo rustc rustfmt clippy pkg-config openssl sqlite ];
};
});
checks = forAllSystems (system: pkgs: {
vm = import ./nix/tests/ota.nix { inherit pkgs self system; };
});
};
}