-
-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathdevenv.nix
More file actions
92 lines (81 loc) · 2.36 KB
/
Copy pathdevenv.nix
File metadata and controls
92 lines (81 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# SPDX-License-Identifier: BSD-3-Clause
# SPDX-FileCopyrightText: 2025 Erlang Ecosystem Foundation
{ pkgs, lib, config, inputs, ... }:
{
packages = with pkgs; [
git
sbom-utility
cyclonedx-cli
xz
p7zip
reuse
osv-scanner
scorecard
];
languages.elixir = {
enable = true;
package = pkgs.beam28Packages.elixir_1_19;
};
languages.erlang = {
enable = true;
package = pkgs.beam28Packages.erlang;
};
languages.zig = {
enable = true;
package = pkgs.zig_0_15;
};
scripts = {
protoc-generate = {
exec = ''
set -euo pipefail
# CycloneDX specification commit (1.7)
CYCLONEDX_SHA="4b3f59453366e27c8073fd24e98bf21ef8892c8e"
PROTO_DIR="schemas/cyclonedx"
# Download proto files from GitHub
rm -rf "$PROTO_DIR"
mkdir -p "$PROTO_DIR"
for VERSION in 1.3 1.4 1.5 1.6 1.7; do
curl -fsSL "https://raw.githubusercontent.com/CycloneDX/specification/''${CYCLONEDX_SHA}/schema/bom-''${VERSION}.proto" \
-o "$PROTO_DIR/bom-''${VERSION}.proto"
done
PATH="$HOME/.mix/escripts:$PATH"
mix local.hex --force --if-missing
mix escript.install hex protobuf 0.16.0 --force
rm -rf lib/sbom/cyclonedx/v*;
for PROTO in "$PROTO_DIR"/bom-1.*.proto; do
protoc \
--elixir_out=one_file_per_module=true:./lib \
--elixir_opt=package_prefix=SBoM \
--elixir_opt=include_docs=true \
"$PROTO"
done
mv lib/s_bo_m/cyclonedx/* lib/sbom/cyclonedx/;
rm -rf lib/s_bo_m;
find lib/sbom/cyclonedx -path '*/v[0-9]*' -name '*.pb.ex' \
-exec sed -i 's/SBoM\.Cyclonedx/SBoM.CycloneDX/g' {} +;
find lib/sbom/cyclonedx -path '*/v[0-9]*' -name '*.pb.ex' \
-exec sed -i -zE \
's/(defmodule SBoM\.CycloneDX\.V[0-9]+\.([A-Za-z0-9.]+) do\n)( [^@])/\1 @moduledoc "CycloneDX \2 model."\n\3/g' \
{} +;
# Clean up downloaded protos
rm -rf "$PROTO_DIR"
mix format
'';
packages = with pkgs; [
beam28Packages.erlang
beam28Packages.elixir_1_19
protobuf
gnused
curl
];
};
};
git-hooks.hooks = {
reuse = {
enable = true;
name = "REUSE lint";
entry = "reuse lint";
pass_filenames = false;
};
};
}