156 lines
3.5 KiB
HolyC
156 lines
3.5 KiB
HolyC
{ lib, pkgs, ... }:
|
|
|
|
let
|
|
runtimeDeps = with pkgs; [
|
|
coreutils
|
|
cryptsetup
|
|
dbus
|
|
getent
|
|
glibc.bin
|
|
gnugrep
|
|
gnused
|
|
iproute2
|
|
pciutils
|
|
procps
|
|
shadow
|
|
systemd
|
|
util-linux
|
|
xdg-utils
|
|
zfs
|
|
];
|
|
|
|
oneleetAgent = pkgs.stdenv.mkDerivation rec {
|
|
pname = "oneleet-agent";
|
|
version = "2.2.8";
|
|
|
|
src = pkgs.fetchurl {
|
|
url = "https://downloads.oneleet.com/agent/linux/agent_${version}_amd64.deb";
|
|
hash = "sha256-daB5mwlBNGx0vTxD4N12WmS/R80seQWt6UKKYy4xyHs=";
|
|
};
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
autoPatchelfHook
|
|
dpkg
|
|
makeWrapper
|
|
];
|
|
|
|
buildInputs = with pkgs; [
|
|
alsa-lib
|
|
at-spi2-atk
|
|
at-spi2-core
|
|
atk
|
|
cairo
|
|
cups
|
|
dbus
|
|
expat
|
|
gdk-pixbuf
|
|
glib
|
|
gtk3
|
|
libappindicator-gtk3
|
|
libdrm
|
|
libnotify
|
|
libsecret
|
|
libuuid
|
|
libxkbcommon
|
|
mesa
|
|
nspr
|
|
nss
|
|
pango
|
|
stdenv.cc.cc
|
|
udev
|
|
libx11
|
|
libxscrnsaver
|
|
libxcomposite
|
|
libxdamage
|
|
libxext
|
|
libxfixes
|
|
libxrandr
|
|
libxtst
|
|
libxcb
|
|
];
|
|
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
|
|
unpackPhase = ''
|
|
runHook preUnpack
|
|
dpkg-deb -x "$src" .
|
|
runHook postUnpack
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p "$out/bin" "$out/opt" "$out/share"
|
|
cp -a opt/Oneleet "$out/opt/"
|
|
cp -a usr/share/. "$out/share/"
|
|
|
|
makeWrapper "$out/opt/Oneleet/oneleet-agent" "$out/bin/oneleet-agent" \
|
|
--prefix PATH : ${lib.makeBinPath runtimeDeps}
|
|
makeWrapper "$out/opt/Oneleet/oneleet-daemon" "$out/bin/oneleet-cli" \
|
|
--prefix PATH : ${lib.makeBinPath runtimeDeps}
|
|
|
|
substituteInPlace "$out/share/applications/oneleet-agent.desktop" \
|
|
--replace-fail "/opt/Oneleet/oneleet-agent" "$out/bin/oneleet-agent"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
preFixup = ''
|
|
addAutoPatchelfSearchPath "$out/opt/Oneleet"
|
|
'';
|
|
|
|
meta = {
|
|
description = "Oneleet endpoint agent";
|
|
homepage = "https://www.oneleet.com";
|
|
license = lib.licenses.unfree;
|
|
platforms = [ "x86_64-linux" ];
|
|
};
|
|
};
|
|
in
|
|
|
|
{
|
|
environment.systemPackages = [ oneleetAgent ];
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d /opt 0755 root root -"
|
|
"L+ /opt/Oneleet - - - - ${oneleetAgent}/opt/Oneleet"
|
|
"d /etc/oneleet 0755 root root -"
|
|
"d /var/log/oneleet 0755 root root -"
|
|
"d /var/opt/Oneleet 0755 root root -"
|
|
|
|
# Oneleet hardcodes these FHS paths for user/remediation tasks.
|
|
"d /usr/sbin 0755 root root -"
|
|
"d /sbin 0755 root root -"
|
|
"L+ /usr/bin/chage - - - - ${pkgs.shadow}/bin/chage"
|
|
"L+ /usr/bin/getent - - - - ${pkgs.getent}/bin/getent"
|
|
"L+ /usr/sbin/chpasswd - - - - ${pkgs.shadow}/bin/chpasswd"
|
|
"L+ /usr/sbin/useradd - - - - ${pkgs.shadow}/bin/useradd"
|
|
"L+ /usr/sbin/usermod - - - - ${pkgs.shadow}/bin/usermod"
|
|
"L+ /usr/sbin/userdel - - - - ${pkgs.shadow}/bin/userdel"
|
|
"L+ /sbin/shutdown - - - - ${pkgs.systemd}/bin/shutdown"
|
|
];
|
|
|
|
systemd.services.oneleet-daemon = {
|
|
description = "Oneleet Agent Daemon";
|
|
wantedBy = [ "multi-user.target" ];
|
|
wants = [
|
|
"dbus.service"
|
|
"network-online.target"
|
|
];
|
|
after = [
|
|
"dbus.service"
|
|
"network-online.target"
|
|
];
|
|
path = runtimeDeps;
|
|
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart = "${oneleetAgent}/bin/oneleet-cli";
|
|
Restart = "always";
|
|
RestartSec = 5;
|
|
WorkingDirectory = "/opt/Oneleet";
|
|
LogsDirectory = "oneleet";
|
|
};
|
|
};
|
|
}
|