1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{ pkgs ? import <nixpkgs> { } }:

pkgs.writeShellScriptBin "hello-world" ''
  set -euo pipefail
  
  DB_FILE="''${1:-/data/db.sqlite}"
  
  echo "=== SQLite-embedded Hello World (OCI) ==="
  echo "Database file: $DB_FILE"
  echo "PID: $$"
  echo "Container environment: $(${pkgs.coreutils}/bin/uname -a)"
  
  # Read application metadata from __app table
  echo
  echo "=== Application Metadata ==="
  HOME=/tmp ${pkgs.sqlite}/bin/sqlite3 "$DB_FILE" "SELECT 'Name: ' || name, 'Version: ' || version, 'Entry Point: ' || entry_point FROM __app;"
  
  # Show runtime environment
  echo
  echo "=== Runtime Environment ==="
  echo "Working directory: $(${pkgs.coreutils}/bin/pwd)"
  echo "Environment variables:"
  ${pkgs.coreutils}/bin/printenv | ${pkgs.gnugrep}/bin/grep -E '^(PATH|HOME|PWD|SQLITE_|APP_)' || true
  echo "Mount points:"
  ${pkgs.util-linux}/bin/mount | ${pkgs.gnugrep}/bin/grep -E '(bind|tmpfs|proc)' || true
  
  # Create application table and insert data
  echo
  echo "=== Database Operations ==="
  HOME=/tmp ${pkgs.sqlite}/bin/sqlite3 "$DB_FILE" "
    CREATE TABLE IF NOT EXISTS hello_log (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
      message TEXT NOT NULL,
      pid INTEGER,
      container_info TEXT
    );
    
    INSERT INTO hello_log (message, pid, container_info) VALUES 
      ('OCI Container started', $$, 'runc isolation'),
      ('Environment initialized', $$, 'namespaced'),
      ('Database accessible', $$, 'bind-mounted');
  "
  
  # Read back the data
  echo "Data written to hello_log table:"
  HOME=/tmp ${pkgs.sqlite}/bin/sqlite3 "$DB_FILE" "SELECT id, datetime(timestamp, 'localtime') as time, message, pid, container_info FROM hello_log ORDER BY id;"
  
  echo
  echo "=== Success ==="
  echo "Hello world OCI application completed successfully!"
''