Problem understanding non blocking delay via millis()

At least i found out that the time check doesn't seem to ever start, Serial.println(previousMillis); never happens. I still have got no idea why.

Here's the full version:

int switchPin = 2;              // switch is connected to pin 2
int pir = 3;                    // pir sensor on pin 3
int potPin = A0;                // brightness control
int statLed = 10;               // mode indicator
int lightOut = 11;              // LED strip will go here

int aVal;                       // variable for reading the pot
int val;                        // variable for reading the pin status
int val2;                       // variable for reading the delayed status
int buttonState;                // variable to hold the button state

long previousMillis = 0;
long interval = 90000;         //wait time for pir mode

int ledState;
int lightMode = 0;              // dimmer mode or pir mode

void setup() {
  pinMode(switchPin, INPUT_PULLUP);
  pinMode(pir, INPUT);
  pinMode(statLed, OUTPUT);
  pinMode(lightOut, OUTPUT);
  Serial.begin(9600);
  buttonState = digitalRead(switchPin);   // read the initial state
}

void loop(){

  val = digitalRead(switchPin);           // checking and debouncing
  delay(10);
  val2 = digitalRead(switchPin);
  if (val == val2) {
    if (val != buttonState) {
      if (val == LOW) {
        if (lightMode == 0) {
          lightMode = 1;                  // go to pir mode
        }
        else {
          lightMode = 0;                  //go to dimmer mode
        }
      }
    }
    buttonState = val;                    // save the new state
  }

  if (lightMode == 0) {                   //dimmer
    aVal = analogRead(potPin);
    analogWrite(lightOut,map(aVal, 0, 1023, 2, 255));
    analogWrite(statLed,map(aVal,0,1023,200,2));
  }

  else{                                  //pir
    digitalWrite(statLed, HIGH);

    // here is my problem

    if(digitalRead(pir) == HIGH){


      digitalWrite(lightOut, HIGH);
      unsigned long currentMillis = millis();
      if(currentMillis - previousMillis > interval){
        previousMillis = currentMillis;
        Serial.println(previousMillis);
        digitalWrite(lightOut, LOW);

      }

    }
    else{
      digitalWrite(lightOut, LOW);
    }
  }
}