{ lib, ... }: let poe = [ "ge-0/0/0" "ge-0/0/1" "ge-0/0/2" "ge-0/0/3" "ge-0/0/4" "ge-0/0/5" "ge-0/0/6" "ge-0/0/7" "ge-0/0/8" "ge-0/0/9" "ge-0/0/10" "ge-0/0/11" "ge-0/0/12" "ge-0/0/13" "ge-0/0/14" "ge-0/0/15" "ge-0/0/16" "ge-0/0/17" "ge-0/0/18" "ge-0/0/19" "ge-0/0/20" "ge-0/0/21" "ge-0/0/22" "ge-0/0/23" "ge-0/0/24" "ge-0/0/25" "ge-0/0/26" "ge-0/0/27" "ge-0/0/28" "ge-0/0/29" "ge-0/0/30" "ge-0/0/31" "ge-0/0/32" "ge-0/0/33" "ge-0/0/34" "ge-0/0/35" "ge-0/0/36" "ge-0/0/37" "ge-0/0/38" "ge-0/0/39" "ge-0/0/40" "ge-0/0/41" "ge-0/0/42" "ge-0/0/43" "ge-0/0/44" "ge-0/0/45" "ge-0/0/46" "ge-0/0/47" ]; non_poe = [ # sfp ports "ge-0/1/0" "ge-0/1/1" "ge-0/1/2" "ge-0/1/3" "xe-0/1/0" "xe-0/1/1" "xe-0/1/2" "xe-0/1/3" "et-0/1/0" "et-0/1/1" "et-0/1/2" "et-0/1/3" # uplink block "ge-0/2/0" "ge-0/2/1" "ge-0/2/2" "ge-0/2/3" "xe-0/2/0" "xe-0/2/1" "xe-0/2/2" "xe-0/2/3" ]; in { netconf.mandatoryInterfaces = lib.listToAttrs ( map (name: { inherit name; value.supportPoE = true; }) poe ) // lib.listToAttrs ( map (name: { inherit name; value.supportPoE = false; }) non_poe ); }