205 lines
4.8 KiB
Nix
205 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
|
|
|
|
# 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;
|
|
}
|
|
);
|
|
}
|