124 lines
3.6 KiB
Nix
124 lines
3.6 KiB
Nix
{
|
|
description = "SSH honeypot with frontend";
|
|
|
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
|
|
outputs =
|
|
{ self, nixpkgs }:
|
|
let
|
|
allSystems = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
"x86_64-darwin"
|
|
"aarch64-darwin"
|
|
];
|
|
forAllSystems =
|
|
f:
|
|
nixpkgs.lib.genAttrs allSystems (
|
|
system:
|
|
f {
|
|
pkgs = import nixpkgs { inherit system; };
|
|
}
|
|
);
|
|
in
|
|
{
|
|
overlays.default = final: prev: {
|
|
apiary = self.packages.${prev.system}.default;
|
|
};
|
|
|
|
packages = forAllSystems (
|
|
{ pkgs }:
|
|
{
|
|
default = self.packages.${pkgs.system}.apiary;
|
|
apiary =
|
|
let
|
|
src = pkgs.lib.sourceFilesBySuffices ./. [
|
|
"go.mod"
|
|
"go.sum"
|
|
".go"
|
|
];
|
|
version = pkgs.lib.strings.removePrefix "v" (
|
|
builtins.elemAt (pkgs.lib.strings.split "\"" (
|
|
pkgs.lib.lists.findFirst (x: pkgs.lib.strings.hasInfix "Version" x) null (
|
|
pkgs.lib.strings.splitString "\n" (builtins.readFile ./version.go)
|
|
)
|
|
)) 2
|
|
);
|
|
rev = self.rev or "";
|
|
geoDb = pkgs.fetchFromGitHub {
|
|
owner = "geoacumen";
|
|
repo = "geoacumen-country";
|
|
rev = "5f770af620465f40427c3f421446a7b7845e2699";
|
|
sha256 = "sha256-t3ELkhAbJC40z6r6wJeQI4Kutfw26fRg6n7a6FmhvkA=";
|
|
};
|
|
|
|
frontend = pkgs.buildNpmPackage {
|
|
inherit version;
|
|
name = "apiary-frontend";
|
|
|
|
src = ./frontend;
|
|
|
|
npmDepsHash = "sha256-7gjPEiQAMOpteLwHT4AIY9QLpDozpXb7xy0bDiOpDf4=";
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r dist/* $out
|
|
'';
|
|
};
|
|
in
|
|
pkgs.buildGoModule {
|
|
inherit version;
|
|
pname = "apiary";
|
|
src = src;
|
|
prePatch = ''
|
|
cp ${geoDb}/Geoacumen-Country.mmdb honeypot/ssh
|
|
mkdir -p web/frontend/dist
|
|
cp -r ${frontend}/* web/frontend/dist
|
|
'';
|
|
vendorHash = "sha256-RtYKwUx5m8pL6MUinmK7yNFNxybnN+Xs0k6Cv1CITEU=";
|
|
ldflags = [ "-X git.t-juice.club/torjus/apiary.Build=${rev}" ];
|
|
tags = [
|
|
"embed"
|
|
];
|
|
};
|
|
|
|
tarball =
|
|
let
|
|
version = self.packages.${pkgs.system}.apiary.version;
|
|
in
|
|
pkgs.stdenv.mkDerivation {
|
|
name = "apiary-tarballs-${version}";
|
|
phases = [ "installPhase" ];
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
mkdir apiary
|
|
cp ${self.packages.${pkgs.system}.apiary}/bin/apiary apiary/apiary-${pkgs.system}-${version}
|
|
tar cvzf $out/apiary-${pkgs.system}-${version}.tar.gz apiary
|
|
pushd apiary
|
|
sha256sum apiary-${pkgs.system}-${version} > apiary-${pkgs.system}-${version}.sha256sum
|
|
popd
|
|
cp apiary/apiary-${pkgs.system}-${version}.sha256sum $out
|
|
'';
|
|
};
|
|
}
|
|
);
|
|
devShells = forAllSystems (
|
|
{ pkgs }:
|
|
{
|
|
default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
go
|
|
golangci-lint
|
|
];
|
|
};
|
|
frontend = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
nodejs
|
|
yarn
|
|
];
|
|
};
|
|
}
|
|
);
|
|
};
|
|
}
|