init
This commit is contained in:
204
flake.nix
Normal file
204
flake.nix
Normal file
@@ -0,0 +1,204 @@
|
||||
{
|
||||
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;
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user