To solve this optimization problem, we need to define the decision variables, objective function, and constraints. 

Let's denote:
- $P$ as the number of acres of peaches grown,
- $N$ as the number of acres of nectarines grown.

The objective is to maximize profit, which can be calculated as $300P + 350N$, given the profits per acre for peaches and nectarines, respectively.

We have two main constraints:
1. The total cost of bug-spray must not exceed $1350. Since each acre of peaches requires $40 worth of bug-spray and each acre of nectarines requires $50 worth, this constraint can be represented as $40P + 50N \leq 1350$.
2. The total time to spray the bug-spray must not exceed 2000 minutes. With 50 minutes required per acre for peaches and 70 minutes per acre for nectarines, this constraint is $50P + 70N \leq 2000$.

Additionally, we have non-negativity constraints since we cannot grow a negative number of acres: $P \geq 0$ and $N \geq 0$. Also, given that we only have 30 acres available, we have the constraint $P + N \leq 30$.

Here is how this problem can be represented in Gurobi Python code:

```python
from gurobipy import *

# Create a new model
m = Model("Optimal_Peach_Nectarine_Growth")

# Decision variables
peaches = m.addVar(lb=0, name="Peaches")
nectarines = m.addVar(lb=0, name="Nectarines")

# Objective function: Maximize profit
m.setObjective(300*peaches + 350*nectarines, GRB.MAXIMIZE)

# Constraints
m.addConstr(40*peaches + 50*nectarines <= 1350, "Bug_Spray_Cost")
m.addConstr(50*peaches + 70*nectarines <= 2000, "Spraying_Time")
m.addConstr(peaches + nectarines <= 30, "Land_Availability")

# Solve the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Peaches: {peaches.x}")
    print(f"Nectarines: {nectarines.x}")
    print(f"Max Profit: ${300*peaches.x + 350*nectarines.x:.2f}")
else:
    print("No optimal solution found")
```