mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
108 lines
3.6 KiB
Nix
108 lines
3.6 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "nixpkgs";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
asn2org = {
|
|
url = "github:vincentbernat/asn2org/gh-pages";
|
|
flake = false;
|
|
};
|
|
};
|
|
outputs = { self, nixpkgs, flake-utils, asn2org }:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
};
|
|
nodejs = pkgs.nodejs-18_x;
|
|
go = pkgs.go_1_23;
|
|
frontend = pkgs.buildNpmPackage.override { inherit nodejs; } {
|
|
name = "akvorado-frontend";
|
|
src = ./console/frontend;
|
|
npmDepsHash = builtins.readFile ./nix/npmDepsHash.txt;
|
|
installPhase = ''
|
|
mkdir $out
|
|
cp -r node_modules $out/node_modules
|
|
cp -r ../data/frontend $out/data
|
|
'';
|
|
};
|
|
ianaServiceNames = pkgs.fetchurl {
|
|
url = "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv";
|
|
hash = builtins.readFile ./nix/ianaServiceNamesHash.txt;
|
|
};
|
|
backend = pkgs.buildGoModule.override { inherit go; } {
|
|
doCheck = false;
|
|
name = "akvorado";
|
|
src = ./.;
|
|
vendorHash = builtins.readFile ./nix/vendorHash.txt;
|
|
buildPhase = ''
|
|
cp -r ${frontend}/node_modules console/frontend/node_modules
|
|
cp -r ${frontend}/data console/data/frontend
|
|
|
|
touch .fmt-js~ .fmt.go~ .lint-js~ .lint-go~
|
|
find . -print0 | xargs -0 touch -d @0
|
|
|
|
make all \
|
|
MOCKGEN=${pkgs.mockgen}/bin/mockgen \
|
|
GOIMPORTS=${pkgs.gotools}/bin/goimports \
|
|
PIGEON=${pkgs.pigeon}/bin/pigeon \
|
|
REVIVE=${pkgs.coreutils}/bin/true \
|
|
ASNS_URL=${asn2org}/asns.csv \
|
|
SERVICES_URL=${ianaServiceNames}
|
|
'';
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp bin/akvorado $out/bin/.
|
|
'';
|
|
};
|
|
in
|
|
rec {
|
|
apps = pkgs.lib.attrsets.mapAttrs
|
|
(name: value:
|
|
let
|
|
script = pkgs.writeShellScriptBin name value;
|
|
in
|
|
{
|
|
type = "app";
|
|
program = "${script}/bin/${name}";
|
|
})
|
|
rec {
|
|
update-vendorHash = ''
|
|
sha256=$(2>&1 nix build --no-link .#backend.goModules \
|
|
| ${pkgs.gnused}/bin/sed -nE "s/\s+got:\s+(sha256-.*)/\1/p")
|
|
[[ -z "$sha256" ]] || echo $sha256 > nix/vendorHash.txt
|
|
'';
|
|
update-npmDepsHash = ''
|
|
sha256=$(2>&1 nix build --no-link .#frontend.npmDeps \
|
|
| ${pkgs.gnused}/bin/sed -nE "s/\s+got:\s+(sha256-.*)/\1/p")
|
|
[[ -z "$sha256" ]] || echo $sha256 > nix/npmDepsHash.txt
|
|
'';
|
|
update-ianaServiceNamesHash = ''
|
|
sha256=$(2>&1 nix build --no-link .#ianaServiceNames \
|
|
| ${pkgs.gnused}/bin/sed -nE "s/\s+got:\s+(sha256-.*)/\1/p")
|
|
[[ -z "$sha256" ]] || echo $sha256 > nix/ianaServiceNamesHash.txt
|
|
'';
|
|
update = ''
|
|
${update-vendorHash}
|
|
${update-npmDepsHash}
|
|
${update-ianaServiceNamesHash}
|
|
'';
|
|
};
|
|
|
|
packages = {
|
|
inherit backend frontend ianaServiceNames;
|
|
default = backend;
|
|
};
|
|
|
|
# Activate with "nix develop"
|
|
devShells.default = pkgs.mkShell {
|
|
name = "akvorado-dev";
|
|
nativeBuildInputs = [
|
|
go
|
|
nodejs
|
|
pkgs.git
|
|
pkgs.curl
|
|
];
|
|
};
|
|
});
|
|
}
|