Files
qc2-reader/flake.nix
2026-03-09 09:01:17 -04:00

208 lines
4.8 KiB
Nix

{
description = "zig template";
nixConfig = {
extra-substituters = [
"https://nix.trev.zip"
];
extra-trusted-public-keys = [
"trev:I39N/EsnHkvfmsbx8RUW+ia5dOzojTQNCTzKYij1chU="
];
};
inputs = {
systems.url = "github:nix-systems/default";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
trev = {
url = "github:spotdemo4/nur";
inputs.systems.follows = "systems";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
nixpkgs,
trev,
...
}:
trev.libs.mkFlake (
system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [
trev.overlays.packages
trev.overlays.libs
];
};
fs = pkgs.lib.fileset;
in
rec {
devShells = {
default = pkgs.mkShell {
shellHook = pkgs.shellhook.ref;
packages = with pkgs; [
zig
zls
lldb
# deps
duckdb
# linters
octoscan
# formatters
nixfmt
prettier
# util
bumper
flake-release
renovate
];
};
bump = pkgs.mkShell {
packages = with pkgs; [
bumper
];
};
release = pkgs.mkShell {
packages = with pkgs; [
flake-release
];
};
update = pkgs.mkShell {
packages = with pkgs; [
renovate
];
};
vulnerable = pkgs.mkShell {
packages = with pkgs; [
# flake
flake-checker
# actions
octoscan
];
};
};
checks = pkgs.lib.mkChecks {
zig = {
src = packages.default;
script = ''
zig build test
'';
};
actions = {
root = ./.;
fileset = ./.github/workflows;
deps = with pkgs; [
action-validator
octoscan
];
forEach = ''
action-validator $file
octoscan scan $file
'';
};
renovate = {
root = ./.github;
fileset = ./.github/renovate.json;
deps = with pkgs; [
renovate
];
script = ''
renovate-config-validator renovate.json
'';
};
nix = {
root = ./.;
filter = file: file.hasExt "nix";
deps = with pkgs; [
nixfmt
];
forEach = ''
nixfmt --check "$file"
'';
};
prettier = {
root = ./.;
filter = file: file.hasExt "yaml" || file.hasExt "json" || file.hasExt "md";
deps = with pkgs; [
prettier
];
forEach = ''
prettier --check "$file"
'';
};
};
packages = with pkgs.lib; rec {
default = pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "zig-template";
version = "0.0.1";
src = fs.toSource {
root = ./.;
fileset = fs.unions [
./build.zig
./build.zig.zon
./src
./LICENSE
];
};
nativeBuildInputs = with pkgs; [
zig.hook
];
meta = {
description = "zig template";
mainProgram = "zig_template";
homepage = "https://github.com/spotdemo4/zig-template";
changelog = "https://github.com/spotdemo4/zig-template/releases/tag/v${finalAttrs.version}";
license = licenses.mit;
platforms = platforms.all;
};
});
image = pkgs.dockerTools.buildLayeredImage {
name = default.pname;
tag = default.version;
contents = with pkgs; [
dockerTools.caCertificates
];
created = "now";
meta = default.meta;
config = {
Cmd = [ "${meta.getExe default}" ];
Labels = {
"org.opencontainers.image.title" = default.pname;
"org.opencontainers.image.description" = default.meta.description;
"org.opencontainers.image.version" = default.version;
"org.opencontainers.image.source" = default.meta.homepage;
"org.opencontainers.image.licenses" = default.meta.license.spdxId;
};
};
};
};
formatter = pkgs.nixfmt-tree;
}
);
}