2026-01-24 12:16:24 -05:00
|
|
|
{
|
2026-01-24 15:30:10 -05:00
|
|
|
description = "OOTT - An easy to setup and use network device monitoring service";
|
2026-01-24 12:16:24 -05:00
|
|
|
|
|
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
outputs = {
|
|
|
|
|
self,
|
|
|
|
|
nixpkgs,
|
|
|
|
|
}: let
|
|
|
|
|
# System types to support.
|
|
|
|
|
supportedSystems = ["x86_64-linux"];
|
|
|
|
|
|
|
|
|
|
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
|
2026-01-25 10:37:47 -05:00
|
|
|
forEachSystem = nixpkgs.lib.genAttrs supportedSystems;
|
|
|
|
|
|
|
|
|
|
# Package overlays to include
|
|
|
|
|
overlayList = [self.overlays.default];
|
2026-01-24 12:16:24 -05:00
|
|
|
|
|
|
|
|
# Nixpkgs instantiated for supported system types.
|
2026-01-25 10:37:47 -05:00
|
|
|
pkgsBySystem = forEachSystem (system:
|
|
|
|
|
import nixpkgs {
|
|
|
|
|
inherit system;
|
|
|
|
|
overlays = overlayList;
|
2026-02-11 14:07:27 -05:00
|
|
|
|
|
|
|
|
# Front-end specific items
|
|
|
|
|
config = {
|
|
|
|
|
android_sdk.accept_license = true;
|
|
|
|
|
allowUnfree = true;
|
|
|
|
|
};
|
2026-01-25 10:37:47 -05:00
|
|
|
});
|
|
|
|
|
in rec {
|
2026-02-11 14:07:27 -05:00
|
|
|
# Development shell to test the app locally
|
2026-05-28 16:08:14 -04:00
|
|
|
devShells = forEachSystem (system: let
|
|
|
|
|
pythonEnv = pkgsBySystem.${system}.python3.withPackages (ps: [ps.anthropic]);
|
|
|
|
|
in {
|
2026-02-11 14:07:27 -05:00
|
|
|
default = pkgsBySystem.${system}.mkShell rec {
|
|
|
|
|
androidSdk = pkgsBySystem.${system}.androidenv.androidPkgs.androidsdk;
|
|
|
|
|
ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk";
|
|
|
|
|
|
|
|
|
|
nativeBuildInputs = with pkgsBySystem.${system}; [
|
|
|
|
|
pkg-config
|
|
|
|
|
];
|
|
|
|
|
buildInputs = with pkgsBySystem.${system}; [
|
|
|
|
|
openssl
|
|
|
|
|
rustc
|
|
|
|
|
cargo
|
|
|
|
|
sqlite
|
|
|
|
|
flutter
|
|
|
|
|
android-tools
|
|
|
|
|
androidSdk
|
|
|
|
|
jdk17
|
2026-05-27 08:24:48 -04:00
|
|
|
claude-code
|
2026-05-27 14:09:02 -04:00
|
|
|
clippy # Rust linter
|
2026-05-28 16:08:14 -04:00
|
|
|
pythonEnv
|
2026-02-11 14:07:27 -05:00
|
|
|
];
|
2026-02-21 15:10:35 -05:00
|
|
|
|
|
|
|
|
# fish > all
|
|
|
|
|
shellHook = ''
|
2026-05-28 16:08:14 -04:00
|
|
|
export PATH="${pythonEnv}/bin:$PATH"
|
2026-02-22 11:43:33 -05:00
|
|
|
DEV_SHELL=oott exec fish
|
2026-02-21 15:10:35 -05:00
|
|
|
'';
|
2026-02-11 14:07:27 -05:00
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
|
2026-06-01 21:43:08 -04:00
|
|
|
# A Nixpkgs overlay that provides the 'oott' package and its bundled front-end.
|
|
|
|
|
overlays.default = final: prev: {
|
|
|
|
|
oott-frontend = final.callPackage ./nix/frontend.nix {};
|
|
|
|
|
oott = final.callPackage ./nix/package.nix {};
|
|
|
|
|
};
|
2026-01-24 19:26:09 -05:00
|
|
|
|
|
|
|
|
# Package definition
|
2026-01-25 10:37:47 -05:00
|
|
|
packages = forEachSystem (system: {
|
2026-01-25 11:01:11 -05:00
|
|
|
oott = pkgsBySystem.${system}.oott;
|
|
|
|
|
default = pkgsBySystem.${system}.oott;
|
2026-01-28 12:12:06 -05:00
|
|
|
|
|
|
|
|
# Docker image generation
|
|
|
|
|
# use via 'nix build .#dockerImage'
|
|
|
|
|
dockerImage = with pkgsBySystem.${system};
|
|
|
|
|
dockerTools.buildLayeredImage {
|
|
|
|
|
name = "oott";
|
|
|
|
|
tag = "latest";
|
2026-06-01 21:43:08 -04:00
|
|
|
# oott carries its full runtime closure (incl. the bundled front-end);
|
|
|
|
|
# cacert provides the trust store referenced by SSL_CERT_FILE below.
|
|
|
|
|
contents = [oott cacert];
|
|
|
|
|
# Ensure a writable /tmp exists (no base image provides one).
|
|
|
|
|
extraCommands = "mkdir -p tmp";
|
2026-01-28 12:12:06 -05:00
|
|
|
config = {
|
|
|
|
|
Cmd = ["${oott}/bin/oott" "--config" "/config/oott.toml"];
|
2026-06-01 21:43:08 -04:00
|
|
|
# Let openssl/native-tls (used for Pushover notifications) find the CA bundle.
|
|
|
|
|
Env = ["SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt"];
|
2026-01-28 12:12:06 -05:00
|
|
|
};
|
|
|
|
|
};
|
2026-01-24 12:16:24 -05:00
|
|
|
});
|
2026-01-24 14:43:46 -05:00
|
|
|
|
2026-01-25 10:37:47 -05:00
|
|
|
# Modules definition
|
2026-01-25 11:01:11 -05:00
|
|
|
nixosModules = import ./nix/modules {overlays = overlayList;};
|
2026-01-24 12:16:24 -05:00
|
|
|
};
|
|
|
|
|
}
|