This repo adds Nix support on top of the upstream CMake and Debian-style packaging.
flake.nixadds:packages.defaultandpackages.eternal-terminaldevShells.defaultnixosModules.defaultandnixosModules.eternalTerminal
default.nixadds a NixOS module for runningetserverCMakeLists.txtgates Catch2 behindBUILD_TESTING=ONso Nix package builds do not pull test-only dependencies
- Flake builds use
DISABLE_VCPKG=ON,DISABLE_SENTRY=ON,DISABLE_TELEMETRY=ON, andBUILD_TESTING=OFF. - The flake uses
inputs.self.submodules = true, so consumers fetch the vendored submodules needed by the build. - The package source is filtered with
lib.cleanSourceWithso localbuild/,cov_build/, andresult/directories do not leak into Nix builds.
For a local checkout, use path:.:
nix flake show path:.
nix develop path:.
nix build path:. --no-linknix develop gives you a shell with the package inputs and the extra developer tools needed for normal CMake work on NixOS.
Common setup: import the NixOS module for the service, and add the package if you also want the client tools in PATH.
The module manages the server side:
- generates
/etc/et.cfg - starts
etserverfrom the selected package - opens the configured port when
openFirewall = true
Example flake-based NixOS configuration:
{
inputs.et.url = "github:MisterTea/EternalTerminal";
outputs = { nixpkgs, et, ... }: {
nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
et.nixosModules.default
({ pkgs, ... }: {
environment.systemPackages = [
et.packages.${pkgs.stdenv.hostPlatform.system}.default
];
services.eternalTerminal = {
enable = true;
openFirewall = true;
port = 2022;
settings.Networking.bind_ip = "0.0.0.0";
};
})
];
};
};
}Notes:
- The module runs the server, but it does not add the client tools to
PATHby itself. Add the package toenvironment.systemPackagesif you also wantet,htm, and the other binaries available interactively. - When imported through the flake,
services.eternalTerminal.packagedefaults to the flake package. - When importing
./default.nixdirectly, setservices.eternalTerminal.packageyourself.
services.eternalTerminal.enableservices.eternalTerminal.packageservices.eternalTerminal.portservices.eternalTerminal.openFirewallservices.eternalTerminal.settings
services.eternalTerminal.settings is written as INI sections into /etc/et.cfg. Networking.port is always taken from services.eternalTerminal.port.
systemctl status eternal-terminal
journalctl -u eternal-terminal -b